面向对象,类的组合关系,继承,实现,方法重写,方法重载,this的使用,抽象方法和抽象类的比较,父类构造方法存在的意义,多态的是用和解析,各种访问修饰符

来源:互联网 发布:网络剪刀手中文版下载 编辑:程序博客网 时间:2024/04/30 06:05

基本数据类型 也叫值类型。引用数据类型--引用类型

This。只能出现在方法中 ,this代表当前对象的引用。

匿名对象 : new 类名()

Anonymous:匿名

Object

有索引的对象:可以通过索引,反复操作同一个对象

匿名对象因为没有引用变量,所以一般情况下只是用一次。

 

 

组合关系:

继承:关键字:extends

被继承的类叫做父类,继承的类叫子类。

继承之后:子类就可以直接使用父类的非私有成员(成员变量,成员方法)。

优点1提高代码复用性。2提高了代码的可维护性(方便修改和维护)。

3,让类与类之间产生了关系(多态的前提)

父类:有的也叫跟类,基类,超类

父类:拥有子类的共同特点,公共部分的类。

子类:有的也叫派生类

所有的类都有父类,都直接或者间接继承(Object

当父类的成员变量用private修饰时,有get/set方法访问和修改

classf2键改名字;

一个子类不能拥有多个直接父类。只支持单继承。

继承可以多层继承。

Ctrl T查看继承树状关系

方法重写(方法复写,方法覆盖):1子父类中出现方法声明出现一模一样的的方法,2子类的访问权限必须大于等于父类的访问权限,3private修饰的私有方法不能被重写。

这种现象叫做“方法重写”@Override

方法重载

 

权限关键字  public 公共的 > 默认的 (什么都不写)>protected>private  私有的

 

子类的构造方法会先调用父类的空参构造,从而保证父类的相关内容会优于子类对象的产生。子类就可以使用父类的内容了。(因为在子类方法中会先有一个supper() );

Super():带括弧的一定是方法!

子类对象空间中包含了父类的对象空间

构造

 

 

This调用的是本类的成员变量。

在子类方法中:访问子类自身的成员,访问父类的成员。

This.成员变量 可以访问本类对象的成员变量

Super.成员变量 可以访问父类对象的成员变量

This.成员方法 可以访问本类对象的成员方法

Super.成员方法 可以访问父类对象的成员方法

This():找当前类的构造方法

Super():找父类的构造方法

public Dog (){

}  调用父类无参构造方法 、

 

   

Public DogString  nameint  age,【子】)String  color{

Super(nameage)

This.color =  color

  }调用父类有参构造

成员变量:

1在没有thissupper修饰的情况下,变量在使用时遵循就近原则(先找局部变量,再找成员变量,再找父类成员变量。);

2局部变量和成员变量重名是用this区别开。

3子类成员变量和父类成员变量重名时用super区分,

方法调用方法

子类构造方法中第一行要么是super()调用父类构造。要么是this调用子类构造,其最终原则是先有父类 的内容再有子类对象

 

 

包相当于文件夹,同一个包下面不能有相同的类名.

1抽象方法和抽象类:

抽象关键词:abstract

抽象方法  public   abstract  void  methodName();【或者说是规则,子类必须重写】除非子类也是抽象类

抽象方法所在的类必须是抽象类。Abstract class Person{   }

抽象类的特点:

抽象类的所有抽象方法在子类必须重写。除非子类也是抽象类.

但是抽象类中有没有抽象方法也可以;

 

2抽象方法的定义格式:

abstract class Animal{   

Public  abstract  void  eat();

}

3父类构造方法存在的意义:

 

4抽象类常见疑惑:

抽象类本身的意义:抽象类不能创建对象;(不能实例化)

抽象方法所在的类必须是抽象类。但是抽象类中可以没有抽象方法;

抽象方法有构造方法,由来让子类调用.

5接口的概念:功能的集合,(只有抽象方法)

可以解决抽象类的单继承问题.

6接口的定义和使用格式:

接口关键词:interface  

格式:public  interface  Drive{ }

使用格式:public  class  Manager  extends  Employee  implements  Drive{

  }

  Public  class  类名  implements接口名{} //类实现了接口

 

8接口的注意事项;

接口中没有构造方法.也不能创建对象.

实现了接口的子类必须重写接口中所有的抽象方法.除非子类也是抽象类.

9接口的固定修饰符:

在接口中,方法不管写不写abstract.修饰符都默认PUBLIC  Abstract

接口中的变量都是常量,其默认修饰符都是public  static  final.不管写不写都默认有.

Final :最终修饰符

10抽象类与接口的辨析:

Public  class  类名 implements  接口名1,接口名2{}

接口与类,可以多实现.也可以单实现

类与类:只可以单继承,但是可以多层继承

//接口与接口:继承关系,可以单继承,也可以多继承(没什么意义);

注意:

一个类可以继承一个类的同时,实现多个接口

在使用继承和接口时,必须先使用继承,再实现接口,

 

11多态的概念和格式:

面向对象 特征封装 继承 多态

//父类引用.指向子类对象

多态的前提必须有子父类关系.或者是实现接口关系

多态:父类引用变量可以指向子类对象,只展现出父类的功能.(方法体调用的还是子类重写后的方法。但不能再调用子类特有的方法)

子类引用变量可以指向子类对象,展现出子类的功能.(包括父类的功能)

子类对象可以实现出多种形态,这多种形态叫做多态

多态的格式:

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

变量名.方法名();

12多态的使用场景及优点

使用场景:为变量赋值时使用多态,达到父类应用指向子类对象的赋值

 

13多态的类型装换

向上转换:多态本身就是子类型向父类类型转换

格式  :父类类型  f =  new子类类型();

向下转换:(使用强制类型转换)

格式:子类类型 z  = (子类类型)f

14instanceof关键字

用于判断对象是否属于某个类型(对象与类型必须有子父类关系才可以判断,没有关系的两个类型不能判断)

格式:

Boolean  b  =  a instanceof   类型;

判断a是够是这个类型的变量,如果是就返回true,如果不是就返回false

 

Ifa  instanceof  Dog{

Dog  d  =  Dog)a;

d.keepDoor();

}

 

 

 

1 static 简介:

Static是静态修饰符,一般修饰成员。

static修饰的成员属于类,不属于单个这个类的某个对象。

static修饰的成员又叫做类成员,不叫对象的成员。特点1静态修饰的成员被类的所有对象共享

一般static修饰的成员,直接赋值,

类变量(类成员):静态修饰的成员

实例变量(实例成员):没有被静态修饰的成员

当被static修饰的成员被多个对象共享时,其中一个改变这个static成员,那么所有对象的这个成员都会被改变:

特点:被static修饰的成员可以直接通过类名直接访问

2 静态的使用方式及加载原理:

static修饰的成员可以通过类名直接访问,类名,成员;

静态只能访问静态,想访问不是静态的就创建对象

3

4 5 final 关键字

Final:最终的,不可改变的

Final修饰的类,该类不能被继承;

Final修饰的方法,该方法不能被重写;

Final修饰基本类型的变量,无法被再次赋值,而且必须被赋值,(包括 局部变量和成员变量)该变量就变成了常量,不允许修改;

Final修饰的引用变量P不能第二次赋值,指的是P只能指向第一个地址,不能指向第二个地址,(内存地址不允许修改)(内存指向的东西可以更改)

6 包的概念及定义格式:

格式:一般是自己的域名倒着写。

必须写在有效代码的第一行。

在产生的类和对应的.class文件必须在同一个包下面(同一个文件夹下面)

7 包的全名访问:

 impotr 包名加类名

8 带包的类的访问

9 10 11 访问权限:

    权限修饰符:public  公共的——任何地方都可以访问

Protected  受保护的;继承的 ——有自称关系或者同一个包下面的

默认修饰符(什么都不写):——只能在同一个包才能访问

Private   私有的——只能在本类内部访问

在本类当中:可以调用任何权限修饰的成员;

在同一个包下的其他没有关系的类:创建对象之后,除了private修饰的成员其他的都可以访问;

在同一个包下的有子父类关系的类:创建对象之后,除了private修饰的成员其他的都可以访问;

 

跨包下的没有关系的其他类:只能访问public的修饰的成员;

跨包下的是子父类关系的其他类:可以访问public修饰的以及protected修饰的成员

 

访问修饰符:

权限修饰符

public

 protected

 默认的

private

状态修饰符

 static  

final  

Abstract

 

12 内部类的基本概念:(难点并非重点)

内部类:即在类中定义另外一个类。是一个相对概念

内部类可以直接访问外部类的所有成员

内部类分为 :成员内部类和局部内部类(即一个方法内)

13 成员内部类:

 

就是放在成员位置的内部类:

创建格式:

外部类.内部类   对象名= new  外部类().new  内部类();

内部类的意义:一个类放在一个类里面就可以用private修饰进行私有化

静态内部类,没有太大意义

14 局部内部类:局部内部类在一个方法中

A:“创建对象的语句”必须放在“类的定义”的下边

B:局部内部类访问“外部类的局部变量时。要求改变量必须用final修饰JDK1.8之后就不用手动加final了。系统后自动加上

 

15 匿名内部类:匿名内部类本质上是一个继承了父类或者实现了父接口的子类的对象。(它可以赋值给变量作为参数传递  也可以直接调用方法)

New  父类/接口(){

重写父类或者父接口的方法

}

 

 

 

 

 纯手打!

善意分享,欢迎点赞,不喜勿喷;

可以转载,互帮互助,注明出处。

 

工具类:一般指的是:里面的方法全都是静态的方法,而且构造方法被私有化。

 

阅读全文
1 0