J2SE 面向对象 知识点总结(二)

导读:一、类的修饰符

          二、面向对象三大特征

          三、抽象类

          四、接口

          五、this和super


一、类的修饰符

private:             私有变量,只有在类的内部可以访问

protected:        局部保护变量,只有继承类可以访问

public:           全局变量,任何地方都可以访问


二、面向对象三大特征:封装、继承、多态

封装将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的帆帆发来实现对隐藏信息的操作和访问。隐藏对象的信息,留出访问的接口。


优点:①隐藏类的实例细节,方便修改和实现

           ②只能通过规定的方法访问数据(具有清晰的对外接口)

           ③良好的封装能减少耦合

使用private修饰符,只在内部访问。想要在外部访问,创建setter和getter方法(public)


继承多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。(什么是什么;狗是动物就可以使用继承。但是不应为了继承部分功能而去使用继承)

通过继承,子类自动拥有了基类(父类 superclass)的所有成员(成员变量和方法)。java只支持单继承,使用extends关键字实现类的继承。

优点:提高代码的复用性;类和类之间产生了关系,为多态提供了前提

继承中的构造方法:子类的构造过程中必须调用父类的构造方法。

                                使用super调父类、this调自身

                                如果调用了super,必须写在子类构造方法的第一行。

                                如果子类的构造方法没有显示地调用父类构造方法,则系统默认调用父类无参数的构造方法。

                                如果子类的构造方法既没有显示调用父类的构造方法,父类中又没有无参的构造方法,则编译出错。


多态:指在执行期间(而非编译期间)判断所引用对象的实际类型,根据其实际的类型调用其对应的方法。

对同一个客体,可以有多种不同的形式。在面向对象语言中,接口的多种不同的实现方式即为多态。在java中,多态的实现主要通过方法重载和方法重写来实现的。    如果我们用一个父类引用指向子类对象时,会先访问到子类中重写的父类方法(父类的方法不会再执行),如果子类没有重写父类的方法,才会执行父类中的重写办法。同时,子类中没有继承到父类的部分,是不能被执行的。                       Anamal a = new dog();

优点:提高程序的可扩展性和后期的可维护性。

缺点:父类调用的时候只能调用父类的方法,因为不知道什么子类去继承你,所以不能调用子类的特有方法。

多态的三要素:继承、重写、父类引用指向子类对象(向上转型)


三、抽象类

用abstract修饰,抽象方法就是用来被重写的,为空;是残缺不全的,不能实例化(无法new),类的声明也要改为抽象。

public abstract void enjoy{ }                         abstract class....{ }


四、接口(Interface)

接口是一种特殊的抽象类,只有常量和方法的实现,没有变量和方法的实现。

特性: 可以多重实现

            声明的属性默认(也只能)是public static final

            接口中只能定义抽象方法、方法默认(也只能)是public

            接口可以继承其他接口,并添加新的属性和抽象方法

多个无关的类可以实现同一个接口;(implements)

一个类可以实现多个无关的接口;

与继承关系类似,接口与实现类之间存在多态性。

class GoldenMonkey extends Animal implement Valuable , Protectable { }


五、this和super

this:对哪个对象调的方法,this即指向谁。当无法确定某个参数到底指向哪个变量时,指向它最近的声明(就近声明原则)。

class Leaf {
  int i = 0;
  Leaf (int i) {
    this.i = i;
  }
}

this可以看作一个变量,它的值是当前引用的对象

super:用来引用父类对象,用法和this类似。


你可能感兴趣的:(笔记,知识点总结)