java面向对象复习回顾

java面向对象复习回顾

1.java面向对象基础部分

1、类和对象的概述
    类只是抽象概念,程序员编写的类,只是模板,本身不会占用内存(占用的是磁盘空间)。
    对象:有模板创建出来的实例,是真实存在的,会占用内存(程序中就是用对象保存数据)。
    
2、类和对象的关系
    类是对象的模板
    对象是类的实例
    
3、类和对象的组成
    由属性和方法组成。
        属性:事物固有的特征,如身高、体重和姓名等……
        方法:事物能够执行的操作,如吃饭、睡觉和学习等……
    
4、属性:属性就是变量
    特殊的属性:可以将对象作为属性
    
5、方法(普通):
    <1>.无参无返回值
    <2>.无参有返回值
    <3>.有参无返回值
    <4>.有参有返回值
    
    参数的传递方式:属于值传递。这种传递方式不会传递地址。

2.构造方法

1、构造方法的作用:用来构造对象。在创建对象的过程中,会调用构造方法。
一般改写构造方法对属性进行初始化。
注意:
    1、构造方法被改写后,系统的默认结构将会失效。
    2、如果没有手动改写构造方法,那么在创建对象的过程中,系统会调用对应的默认构造方法。
    public 类名(){}
    3、一个类中不一定要写构造方法。
    4、方法名与类名相同的方法不一定是构造方法,例如Test01类中 public void Test01(){} 
    5、类中可以存在多个main方法(重载)。
    6、构造方法的第一句默认调用父类的默认构造。

2、构造(或普通)方法的重载
    1、在同一个类中存在多个相同名字的方法。
    2、同名方法的参数列表必须互不相同,参数列表指数据类型和数据个数。
    public void show(int num,String str){}
    public void show(int num,String str,char ch){}
    属于重载
    3、重载与返回值和访问修饰符无关
    public void method(int num,String str){}
    public int method(int num,String str){}
    不属于重载

3.封装

封装:对于程序的实现细节进行隐藏。
    封装的特点:
    1、属性私有化。不让外部类直接操作属性,防止属性被随意修改操作。
    2、向外部提供getter/setter,间接的修改属性和获得属性的方法。
    3、改写构造方法,使外部类可以初始化属性的值(即赋值)。
    4、重写toString();代替show()方法。
    5、重写equals();提供对象比较的规则。
    6、通过构造方法和set方法可以对属性进行限制,例如如下代码:
public Book(String title, int pageNum) {
        this.title = title;
        setPageNum(pageNum);
    }
    public void setPageNum(int pageNum) {
        if (pageNum > 200) {
            this.pageNum = pageNum;
        } else {
            System.out.println("页数至少为200!");
            this.pageNum = 200;
        }
    }

4.继承

继承:在原有类(父类)的基础上派生出新的类(子类)。
    1、特点 
        1、一旦发生继承关系,子类将会拥有父类的内容。但这些内容不包括:父类的私有内容和构造
        方法,父类可以被继承的成员与访问修饰符有关。此外,如果两个类不在同一个包下,则无法
        直接形成继承关系。
        2、子类继承父类后拥有了父类的内容,这种关系被称为is a的关系。
        3、java类支持单继承,指一个子类只能有一个父类
        4、java类支持多实现,指一个子类可以实现多个java接口
    
    2、访问修饰符:
        public:不同方法之间都可以互相使用,按照实际情况导入包名和类名。
        protected:受保护的 不同包之间可以访问,但是两个类之间必须存在继承关系。
        默认:在同一个包不同类可以相互访问。
        private:只能在本类中使用。
    
    3、创建一个子类代码加载的顺序:优先加载静态资源,代码块。
        父类静态代码块--->父类的静态属性和方法--->子类静态代码块--->子类的静态属性和方法--
         ->父类构造代码块--->父类普通属性和方法--->父类构造方法--->子类构造代码块--->子类        普通属性和方法--->子类构造方法
        

5、抽象类和接口

1、抽象类
    1、抽象类不能实例化,但是拥有构造方法。
    2、有抽象方法的类一定是抽象类。
    3、抽象类不一定有抽象方法,可能没有任何抽象方法。
    4、普通java类继承抽象方法必须实现抽象类的所有方法。
    5、抽象类继承抽象类,不一定要实现父类所有的方法。
    6、抽象类可以有构造方法和普通方法等所有普通类能够拥有的内容。
    7、抽象类中 abstract 关键字不可以省略。

2、接口
    1、接口可以有抽象方法和静态常量,还可以有 default 默认方法。
    2、接口中的对象可以省略 abstract 、 final 、 static 关键字。
    3、接口不可以实现接口。
    4、接口可以单或多继承接口。
    5、接口不可以继承抽象类。
    /**
    区分:java类 只支持单继承
         所以java支持单继承
         java接口 支持多继承
         所以java支持多继承
    */
 
 3、重载和重写的概念区别
    重写:
        1、在子类中将继承自父类的方法进行改写的过程。其方法名和参数列表返回值等都相同。
        2、子类的访问修饰符不能比父类的更加严格。比如父类为 public 则子类不能为 private
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。