Java笔记-面向对象相关

1. 类中变量的分类

  1)局部变量:在方法中定义的变量

  2)成员变量:类的属性

  3)类变量:静态变量,用static修饰

2. 关于构造方法

  每个类都有一个构造方法,没写的,默认有一个空的构造方法。同时,构造方法可以重载(同名但参数列表不同)。

3. 关于final

  修饰类:该类无法被继承

  修饰方法:该方法无法被覆盖或者说重写(子类自己再写一个相同的方法)

  修饰属性:常量

4. 引用和对象实例

  【类名】【对象名】 = new 【类名】(); 

  其中,“【类名】【对象名】”只是创建了一个对象的引用,而“new 【类名】();” 才是在堆区中创建了对象。所以,

Object o1 = new Object();
Object o2 = o1; // 只是起了一个别名

  以上操作并不会创建连个对象,而是两个引用指向了同一个对象。

5. 权限修饰符

权限 本类 同包 子类 其他
private  ●      
默认  ●  ●    
protected  ●  ●  ●  
public  ●  ●  ●  ●

 

 

 

 

 

 

  利用权限封装:先将属性用private修饰,然后使用创建相应的get和set方法。

6. 关于this

  避免由于和成员变量重名而发生的冲突。

public class DemoClass {
    privated int x = 1; 

    public void setX(int x) {
        this.x = x;
    }     
}

7. 关于继承

  使用关键字extends父类,可以使用除privated外父类所有的属性和方法,同时子类还可以重写父类的方法。Java中的继承方式是单继承,同时引入接口interface弥补单继承的不足之处。

8. 关于super

  1)访问父类的方法和属性时加用“super.XXX”;

  2)调用父类的构造方法时,在子类的第一行添加“super()”方法。

9. 关于重载和重写

  1)重载:同一个类中,方法名相同,但是参数列表相同;

  2)重写:子类继承父类时,写一个和父类完全相同的方法,调用时,优先使用子类自己定义的方法。

10. 向上转型和向下转型

  1)向上转型:父类对象引用指向子类对象,该引用不能访问子类独有的属性和方法,同时优先访问子类重写过的方法;

  2)向下转型:创建一个子类的对象引用,并指向向上转型过的对象。

// 《菜鸟教程》的一个实例
public
class Test { public static void main(String[] args) { show(new Cat()); // 以 Cat 对象调用 show 方法 show(new Dog()); // 以 Dog 对象调用 show 方法 Animal a = new Cat(); // 向上转型 a.eat(); // 调用的是 Cat 的 eat Cat c = (Cat)a; // 向下转型 c.work(); // 调用的是 Cat 的 work } public static void show(Animal a) { a.eat(); // 类型判断 if (a instanceof Cat) { // 猫做的事情 Cat c = (Cat)a; c.work(); } else if (a instanceof Dog) { // 狗做的事情 Dog c = (Dog)a; c.work(); } } } abstract class Animal { abstract void eat(); } class Cat extends Animal { public void eat() { System.out.println("吃鱼"); } public void work() { System.out.println("抓老鼠"); } } class Dog extends Animal { public void eat() { System.out.println("吃骨头"); } public void work() { System.out.println("看家"); } }

11. 抽象类

   1)用关键字abstract修饰抽象方法和和抽象名;

   2)抽象类可以包含普通方法,可以不包含抽象方法,但有抽象方法的一定是抽象类。

public abstract Demo{
   public abstract void fun(){
   }   
}

 

12. 关于接口

  1) 不能用于实例化对象;

  2) 接口中的方法有抽象方法(可以不加abstract修饰符,默认就是抽象方法)、default方法(加default修饰符,相当于类中的普通方法)和静态方法(调用时使用“【类名】.【方法名】”);

  3) 成员变量是static final类型;

  4)一个接口可以继承多个接口,一个类也可以使用多个接口。

 

13. 关于内部类

  1)成员内部类:相当于一种特殊的成员变量;可以直接访问外部类的属性和方法,反之不行,遇到属性和方法相同时,优先用自己的,也可以借助this用外部的;无法拥有static属性和方法;

  2)静态成员类(嵌套类):成员内部类用static修饰;

  3)局部内部类:定义在方法和作用域内的内部类;

  4)匿名内部类:没有名字的内部类,用于简化代码,只能用一次。

 

你可能感兴趣的:(Java笔记-面向对象相关)