JAVA三大特性

xiaoxiao2021-02-28  122

三大特性

封装:

     封装内主要包括"方法","访问权限修饰符号","属性"。

     方法: 

"方法即对象的行为" 方法的声明:【访问权限修饰符号】 【修饰符】 返回值类型 方法名(形式参数列表){(方法体可有可无)}。

方法列子

public static void main(String[] args){ 【return;】 }

 访问权限修饰:

private:私有权限,同类中访问 default:同包权限,只能在一个包内访问 protected:同包权限和子类权限 public:公共权限,可以被任何类访问

封装

   将一组逻辑相关的属性方封装在类中,通过访问权限修饰符来隐藏内部细节,公开访问的接口的技术成为类的封装技术

   隐藏内部细节,使其不被外部影响,方便内部的修改    同时降低外部使用的复杂度 属性用private隐藏,方法用public公开。

列子

public class Police{ public static void main(String[] args){       private String name;      private  String age; public String getName(){      return name; } public void setName(String name){        this.name=name; } public String getAge(){       return age; }      public void setAge(String age){         this.age=age; }            retrun ture;

}

单列模式

class Police{

private Police(){

}

private static Police police=new Police();

public static Police GetInstance(){

retun police;

}

}

继承

子类继承父类,只能单继承,方法自动拥有,可实现代码复用

继承与构造器

原则:子类在创键对象是有义务先完成父类对象的构造。

    纯在继承关系时,创键子类对象会先调用父类的无参构造器在调用子类的构造器,

若不存在父类默认无参构造器则会则会报错,或通过suer关键字显示的调用父类的其他构造器。

   super调用父类构造器时只能在子类构造器的第一行。

This关键字==>当前实例

   当前对像的属性,当前对象的方法,当前对象的构造方法。

Super关键字==>父类实例

  父类对象的属性,父类对象的方法,父类对象的构造器。“权限允许”

方法覆盖

在继承关系中

同名,同参,同返回值

不可缩小访问权限修饰符

Protected关键字

方法,构造器,同包以及子类中可以访问。

Final

属性:当创键时必须赋值,之后不可以在更改赋值,(“基本数据类型”,“引用数据类型=>不可以只想其他对象,内部属性可变”)

方法:final方法不可以被子类覆写。

类:final的类不可被继承。

抽象

抽象类:不可被实例化,可以再定义抽象方法(方法用abstract修饰,不能有实现)

含有抽象方法的类,必须是抽象类

多态

含义:对外是一种表现,对内有多种表现形式。

多态的具体表现

表现:方法重载,方法覆盖,多态参数

运行期类型和编译器类型

编译期类型和运行期类型相同

A a= new A()

a.show();

声明A的时候,使用到类型A表示对象类型,被称为编译期类型。

在编译期,虚拟机认为a的是类型是A,对于a所使用的属性和方法和方法的有效性将到类A中去验证。

构造方法A()中的A是运行期类型。

在运行期,将执行运行期类型中的方法

当有继承关系是,可能发生编译期类型和运行期类型不同的情况,即编译期类型是父类类型,运行期类型是子类类型。

A类是B类的父类

A ab=new B();

ab.show();

   对象ab的编译期类型为父类A类。

  运行期类型为子类B类。

  如果一个引用的编译期类型和运行期类型不同,那么一定是编译类型与运行类型有父类子类关系,或者接口与实现的关系。

  ab对象使用的方法,在编译期到类A中校验,而运行则执行B类的方法

   如果一个对象的编译期类型是父类,运行期类型是子类,可以对该对象进行将值类型转换,将编译期类型转换为与运行期类型相同的类,即 B b=(B)ab;

转载请注明原文地址: https://www.6miu.com/read-24853.html

最新回复(0)