• 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匿名内部类(只能实现一个接口)

  • 相关阅读:
    全站仪定向距离差 方向不差 这样敢放线吗
    关于老王
    cad巧用插件自定义填充图形
    老王教你永不会错的测量坐标方位角计算方法
    jqgrid 点击列头的超链接或按钮时,不触发列排序事件
    jqgrid 将列头设置为超链接或按钮
    jqgrid 设置隔行换色
    jqgrid 设置行编辑为本地端编辑状态
    jqgrid 让隐藏的列在编辑状态时出现且可编辑
    jqgrid 设置编辑行中的某列为下拉选择项
  • 原文地址:https://www.cnblogs.com/zouhq/p/10542209.html
Copyright © 2020-2023  润新知