Java面向对象知识点总结

Java面向对象知识点总结,第1张

1类和对象

类的创建class 类名{  

所含变量定义;

}

对象实例化:类名 对象名=new 类名();

习惯上类名首字母大写

2、方法和方法重载

成员方法定义: 访问修饰符类型 返回值类型  方法名(参数列表){

方法体;
}

习惯上成员方法名首字母小写

构造方法:作用是创建对象,对象初始化,

1)函数名称与类的名称相同

2)不含返回类型

构造方法定义:

Public 类名(){} //当有有参构造的时候无参默认方法建议写出来,不然会消失
Public 类名(参数列表){}//可以再对象初始化的同时进行属性赋值
一旦有有参构造,无参构造系统不再默认为空

this指针:

例:

Class A{          //定义类A

String name;      //定义类的成员变量name

AString name{ //定义带参构造函数

this.name=name;  //函数内部的变量和类的成员变量重名时,用this来标记该变量属于类的成员变量

}

}

使用构造函数:类名 对象名=new 类名(传给构造函数的参数列表)

方法重载:

在同一个类中,方法名相同,参数列表不同(类型、数量、顺序)

3、封装

主要解决安全问题;

访问修饰符

public:全工程=都可见范围最大
protected:包级私有+子类可见
默认:在同一个包的所有类可见 
private:只有本类可见、范围最小

修饰符高低public>默认(不写)>protected>private

static关键字
static的属性叫类属性:全局变量,目的就是无论那个对象或者整个类型来改变属性的值,都会对其他对象或者整个类造成影响,可以在对象创立前访问

静态变量:

静态变量定义:static 数据类型 变量名;

静态变量的访问:常用 “类名.静态变量名“ 来访问  或(“对象名.静态变量名”来访问(少用))

静态函数

静态函数不能访问非静态成员数据(静态函数内部没有this指针)

静态函数定义:static 返回值类型  方法名(参数列表){

}

静态函数访问:常用 “类名.函数名”来访问,也可用”对象名.函数名“来访问(少用)

 静态代码块:

当类被载入时静态代码块被执行,且只被执行一次,对每个对象进行初始化

例:

Class A{

Static String name; //静态变量name

Static{        

Name=“香港银行“;

}

}
4、继承

关键字:extends

子类对象继承了父类对象的所有内容,但不都可见
 静态资源属于类,不属于被继承的范畴

子类无参构造方法默认来自于父类无参
如果父类有有参,但没有无参,子类就无法直接写出无参构造

注:(1Java 不支持多重继承,一个子类只能有一个父类

       (2)Java中可以有多层继承,如A继承了B,B又继承了C,此时相当于A继承了C

实例化子类对象时调用顺序(先后):

父类静态初始化器---子类静态初始化器---父类的初始化器---父类的构造函数---子类的初始化器---子类的构造函数  

父类构造函数无参数时,实例化子类对象,先自动实例化父类对象,此时调用的是父类无参的构造函数。   

父类构造函数有参数时:用super(参数列表)给父类传参数

注:super(参数列表)必须写在子类构造函数的第一句,传入的参数必须与父类构造函数中的参数列表类型相匹配

例:

 package extends3;
   class Dialog{             //父类 Dialog
   protected String title;
   public Dialog(String title){  //父类带参构造函数
   this.title=title;
   }
  }

class FontDialog extends Dialog{  //子类FontDialog继承父类Dialog
  private String fontName;

public FontDialog(String title,String fontName){ //子类带参构造函数

super(title);                          //super给父类构造函数传参数  
  this.fontName= fontName;      

}

5、成员的覆盖和多态

变量隐藏:对于成员变量来说,当子类本身具有与继承自父类的成员变量名称相同的成员变量时,便构成了成员变量的隐藏。其含义是,在子类中直接调用该成员变量时,将调用的是子类中本身具有的成员变量,而不是父类继承的成员变量。

方法重写:子类中的函数定义和父类相同时,在子类对象使用该方法时,会执行子类中重写的方法。如果子类需要引用父类中原有的方法,可以使用 super 关键字。

方法重写的规则

1、子类继承父类的前提 2、方法名相同3、参数列表相同4 、子类方法的返回值类型要与父类的相同或者是其子类5、访问修饰符不能比父类更严格(子类>=父类)

2、静态方法不属于对象,不能被继承,调用需要直接用类名.方法名()
静态方法不能与普通方法重名

多态

  1. 父类中的方法被子类重写
  2. 在别的类中,有一个参数为父类类型的方法,调用了被重写的父类方法
  3. 调用时,实参时子类对象,那么就会调用该子类对象重写后的方法

上转型和下转型

Father f = new Son();//上转型, 自动转换

上转型特点:

父类的对象f可以调用子类中重写父类的函数和父类本身具有的方法和变量,而子类中新增的方法和变量不能调用。

Son s =(Son) f;// 向下转型:通过父类对象(大范围)实例化子类对象(小范围),这种属于强制转换

向下转型特点:

1.向下转型可以调用子类类型中所有的成员

2.父类引用对象指向的是子类对象,那么在向下转型的过程中是安全的,就是编译是不会出错误。但是如果父类引用对象是父类本身,那么在向下转型的过程中是不安全的,编译不会出错,但是运行时会出现 Java 强制类型转换异常

6 抽象和接口

抽像方法和抽象类的定义和特点
1、抽象类关键字abstract
2、抽象方法必须在抽象类内,抽象方法没有方法体
3、抽象类不能被实例化
4、抽象类中可以没有抽象方法、可以有普通方法
5、抽象类可以有构造方法,但规范是保证有无参构造

接口的规则

1、接口关键字:interface,实现的关键字是implements,接口之间可以用extends继承

2、接口是抽象类的进一步抽象,接口不能被实例化,因为里面全是公共抽象方法

3、接口中可以有静态方法,但规范不建议

4、接口中的变量全是公共静态变量,一般在工作中一个接口中可以全是常量,没有方法

5、接口用于拓展功能,多个接口可以被一个接口继承,多个接口可以被一个类实现

抽象类和接口的异同点

相同点:

         都代表抽象层、都不能被实例化,都可以包含抽象方法,都可以实现多态,

         抽象类中的非抽象方法不用重写,其他必须重写,接口的方法必须重写

不同点:

          接口不能有构造方法,接口不建议有静态方法

          抽象类中可以有普通方法,抽象方法也可以不是公共的

          抽象类的目的是代码重用,接口的目的是功能拓展(被实现)

一个类只能继承一个父类,但可以实现多个接口

格式:class子类extends父类implements接口1,接口2,…{}    关键字extends必须位于关键字implements之前。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/725128.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存