JAVA学习---面向对象高级

1.面向对象的特性

抽象、封装、继承、多态

2.继承

2.1理解继承的概念

子类可以继承父类的非private类成员,可以直接调用父类的非私有成员,对于私有成员则需要利用父类中非私有成员实现间接调用。

子类允许对分类的方法进行重写(不影响父类原方法)

优点:可重用、提高代码效率、易维护

2.2实现类的继承(extends)

[访问修饰符] [修饰符] class 子类名 extends 父类名

2.3子类实例化过程

  1. 加载父类,完成父类的静态变量和静态编码快,按照代码顺序执行;
  2. 加载子类,完成子类的静态变量和静态编码快,按照代码顺序执行;
  3. 初始化父类的非静态成员;
  4. 执行父类的构造方法;
  5. 初始化子类的非静态成员;
  6. 执行子类的构造方法。

2.4方法的重写

子类创建与父类具有同名(返回类型和参数列表均一致)的方法但不同功能实现不同业务的方法。

2.5父类引用指向子类实例

父类名 父类类型的变量 = new 子类名();

子类中的成员具有高使用优先级。

2.6 super关键字

在子类内部直接调用父类的成员(与this关键字相近)。

//专业类
abstract class Courses {
    public abstract void getCourses(String[] courses);
}

//计算机专业课程类
class ComputerMajor extends Courses{
    //重写getCourses方法
    public void getCourses(String[] courses) {
        System.out.print("计算机专业的课程有:");
        for (String cou:courses) {
            System.out.print(cou + " ");
        }
    }
}

//会计专业课程类
class AccountingMajor extends Courses{
    //重写getCourses方法
    public void getCourses(String[] courses) {
        System.out.print("会计专业的课程有:");
        for (String cou:courses) {
            System.out.print(cou + " ");
        }
    }
}


//程序主类
public class Demo7_1 {
    public static void main(String[] args) {
        
        Courses cou1 = new ComputerMajor();
        String[] str1 = {"计算机基础", "操作系统", "计算机网络"};
        cou1.getCourses(str1);
        
        System.out.println();
        
        Courses cou2 = new AccountingMajor();
        String[] str2 = {"会计基础", "会计电算话", "法学"};
        cou2.getCourses(str2);
                
    }
}

 

3.抽象类和接口

抽象类的方法允许只有声明而无具体的实现,专门用于继承,接口的所有方法只有方法声明,利用接口可以实现多继承的效果。

3.1抽象类和抽象方法

抽象类不可以被实例化,但可以用来声明变量(不可以用new创建实例),但可以声明变量;

利用abstract指明需要被重写的方法;

抽象方法只有声明而无方法体(大括号部分),必须在自类中被重写,若未重写,则需要被声明为抽象类;

构造方法和静态方法不能用abstract来修饰;

允许有非私有成员。

(有声明和空的方法、有声明无方法)

3.2接口的概念(public static final)

不能被创建实例,类中所有方法均为抽象方法,默认public类型,实现接口的非抽象类必须实现接口中的所有方法,抽象类则可以不要全部实现,类允许有多个接口。

3.3接口的创建和实现

[修饰符] interface 接口名 [extends 接口列表]{
     [public] [static] [final] 变量名; //属性默认修饰
     [public] [abstract] 方法名;       //方法默认修饰
}

3.4接口的实现

class 类名  [extends 父类名] [implements 接口列表]

3.5接口的继承

接口允许继承,并且可以多重继承接口。

interface 接口名 NewInterface extends OldInterface{
//具体接口
}

3.6接口和抽象类的区别

抽象类是对事物的抽象,而接口则是对动作行为的抽象,前者只能单继承,后者可以多继承。

4多态

4.1什么是多态

同一个操作作用在不同的对象上会有不同的回应,从而产生不同的效果。

静态多态---重载

动态多态---继承、重写、父类指向子类

4.2多态的优势---代码扩充性增加、增加灵活性、增加效率、增加简化性

5.内部类

(类的内部定义的类:成员内部类、静态内部类、方法内部类和匿名内部类)

5.1内部类特性

访问修饰符增加了protected和private,内部类可以不创建实例而范围外部类,同名的成员内部类具有更高的优先级,内部类不可以定义静态变量。

5.2成员内部类(内部类可直接访问外部类成员。外部类不可直接访问内部类成员)

public class outerclass{
   [范围内修饰符] class innerclass{
   }
}

5.2静态内部类(只能访问外部类中同样被static修饰的成员)

5.3方法内部类(可以访问外部类成员、方法体外成员不可访问它、static方法的内部类只可访问外部的static成员、方法中的参量和变量需要被final修饰才可被内部类访问)

5.5匿名内部类(只能实现一个接口)

posted @ 2019-03-16 16:02  凌·杰特  阅读(177)  评论(0编辑  收藏  举报