JAVA_面向对象总结

1.对象和类
什么是对象?
就是现实世界真实存在的个体/实体
例如:一个人;一支笔;一把椅子....
什么是类?
就是具有相同或相似属性和行为的对象的集合
例子:人类;鸟类....
class Human{//创建了一个 Human的类
/* 相同或相似的属性 */ String name;//姓名
int age; String address;
/* 相同或相似的行为(方法) */
void eat(){} void sleep(){}
}

 


2.继承的意义
1)意义:为了代码的复用
2)语法:通过 "extends" 关键字来继承
  被继承的类我们叫 “超类或者父类”,继承的类我们叫“派生类或者子类”。
  继承的特点:
  -----》一个子类只能由一个父类,但是一个父类可以有很多个子类,这个特点我们称之为“继承的单一性”
    (可以理解为:一个爸爸可以有多个儿子,但是一个儿子只能有一个爸爸.)
  -----》子类可以继承父类,子类还可以被继承以此类推(爷爷-->儿子-->孙子......),这个特性我们称之为“继承的传递性”
3)理解过程:
 --->现实世界中的继承
继承财产----------------------------------------------------------------结果:财产虽然不是我挣得,但是我也能用
继承皇位----------------------------------------------------------------结果:江山不是我打的,但是我也能坐
继承工作(早些年的时候)--------------------------------------------结果:工作不是我找的,但是我也能工作
--->代码中的继承
结果:代码不是我写的,但是我也能用
例子:
class Human{//超类/父类
  String name;
  int age;
  String address;
void eat(){}
  void sleep(){}
}
/*
*@简述:这个Teacher类继承了Human类,那么Teacher类具有Human中所有的属性和行为
*包括 name,age,address,还有方法eat() 和 sleep()
*虽然Teacher类中没有写但是也是属于他的,Teacher对象同样能够访问和使用这些
*属性和行为
*/
class Teacher extends Human{//继承Human类
  double sarray;//老师有一个公资属性
  void teach(){//老师有一个特有的教学行为(方法)
  }


}
class Test{//派生类/子类
  public static void main(String[] args){
    Teacher t = new Teacher();
    t.sarray = 10001;
    t.name = "张三";
    t.age = 12;
    t.address = "北京";
    t.eat();
   //.....

  }



}



总结:从这个例子中可以看出虽然Teacher类中没有写name,age,address,eat(),sleep()等属性和行为,但是Teacher类通过继承Human类,也具有了这些属性

和行为。这样做的好处就是可以大大提高代码的复用性。

 
4.方法的“重载”与“重写”
重载:
@简述:发生在同一个类中,方法名相同,参数列表不同,方法体不同
@意义:以适应用户的各种不同的需求
直接上代码
/*
@简述:类Aoo中有四个重载的方法
*/
class Aoo{
  void show(){
    //....
  }
  void show(int a){
    //....
  }
  void show(String str,int a){  
    //....
  }
void show(int a,String str){  
    //....
  }
  

}

重写:

@简述:发生在父子类中,方法名相同,参数列表相同,方法体不同

@意义:当父类的一些方法子类觉得不好用了或者需要改进时,就需要“重写”

class Aoo{
  void show(){
    方法体1
    //....

  }
}
class Boo extends Aoo{
  void show(){
    方法体2
    //....

  }

  


}

 重点:

@重写与重载的区别?

重写:发生在父子类中,方法名相同,参数列表相同,方法体不同

重载:发生在同一个类中,方法名相同,参数列表不同,方法体不同

5.访问控制 static 和 final
static修饰符(重点):
简述:static是JAVA中一个常见的修饰符,用的比较少
适用场合:用于修饰的变量为(图片,视频,音频)时,特点就是数据只有一份。大家都用同样的一份数据。
1)static修饰变量
@简述:static修饰的变量我们称之为“静态变量”,静态变量是存储在方法区中的。我们都知道JAVA程序是先编译后运行的
编译期:.java 源文件 ------>  .class字节码文件
运行期:JVM加载并运行.class字节码文件
其中.class字节码也是存储在方法区中的,所以程序首先处理的是方法区里面的东西(这个地方是我个人理解)
需要注意的是“静态变量”在方法区中只有一份,也就是数据只有一份。
class Test{
  public static void main(String[] args){
    Aoo a = new Aoo();
    Aoo b = new Aoo();
    Aoo c = new Aoo();
/*
      输出结果:
      static a: 2,b:2
      static a: 3,b:2
      static a: 4,b:2
      

    */    


  }


}
class Aoo{
  public static int a = 1;
  int b = 1;
  Aoo(){
    a++;
    b++;
    System.out.println("static a: "+ a+",b:"+b);

  }

}


 

2)static修饰方法
@简述:这种实际开发中用的比较少,但是也有。
适用场合:当一个方法的使用的结果只与参数有关而与对象无关时
import java.util.Arrays;
class T{
  public static void main(String[] args){
      
      int[] arr = {1,1,12,2,333,3,};
      int[] arr1 = {2,2,1,2,2,2,3,4,5};
      Arrays.sort(arr);//结果只与参数有关,而与对象无关
      Arrays.sort(arr1);

  }


}

 

3)static静态块
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2018-09-16 19:29  NULL_ROOT  阅读(236)  评论(0)    收藏  举报