Java面向对象

对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。

:类是一个模板,它描述一类对象的行为和状态。

一个类可以包含以下类型变量:

  • 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
  • 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
  • 类变量:类变量也声明在类中,方法体之外,但必须声明为 static 类型。

一个类可以拥有多个方法,在上面的例子中:eat()、run()、sleep() 和 name() 都是 Dog 类的方法。

构造方法

每个类都有构造方法。没有定义构造方法,会提供一个默认构造方法。

在创建一个对象的时候,至少要调用一个构造方法。

构造方法的名称必须与类同名,一个类可以有多个构造方法。

publicclassPuppy{

publicPuppy(){

}

publicPuppy(Stringname){

//这个构造器仅有一个参数:name

}

}

 

创建对象

  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字 new 来创建一个对象。
  • 初始化:使用 new 创建对象时,会调用构造方法初始化对象。

public  class  Puppy{

public  Puppy(String  name){

//这个构造器仅有一个参数:name

System.out.println("小狗的名字是:"+name);

}

public  static  void  main(String[]  args){

//下面的语句将创建一个Puppy对象

Puppy  myPuppy=new  Puppy("tommy");

}

}

 

面向对象特征(特性)

封装、继承、多态

 

封装:隐藏类中的细节(属性方法),不能让其他类随意的访问

通过四个访问权限修饰符来达到封装效果

public

公共的

protected

受保护的(家族性的)

default默认

(本包中)

private私有的

(本类中)

 

 

getter

setter

java bean 属性  封装

public String getSex(){

return sex;

}

public void setSex(String sex){

this.sex=sex;

}

 

继承 一个子类可以继承父类,子类就具有父类中定义好的属性和方法

不是所有的属性和方法都能访问到public  protected  本包下的父类   default

  • 1、实现了代码重用
  • 2、多态实现的基础

注意:

  • 1、一个子类只能有一个父类
  • 2、Java支持多重继承

class Animal{

void eat(){

System.out.println("animal : eat");

}

}

class  Dog  extends  Animal{   //extends  子类继承父类

void  eat(){

System.out.println("dog:eat");

}

void  eatTest(){

this.eat();//this调用自己的方法

super.eat();//super调用父类方法

}

}

子类继承父类

方法重写:子类对父类中继承过来的方法重新定义

可以使用@Override注解,来验证方法是否是重写的方法

注意:返回值、方法名、参数列表    不能发生变化

重写的方法访问权限只能更加开放不能更闭塞

@Override

public  void  fly(){

System.out.println("看,天上有个大飞机");

}

子父类间的构造方法

子类的构造方法中首行必须要用父类的构造方法

默认调用父类无参构造方法

父类中没有无参构造方法子类构造方法中必须明文声明调用父类哪一个构造方法

使用super关键字调用父类的构造方法

super(code);

向上转型

调用的方法看对象Plane中的方法

P p=new P();

 

p.fly():

//P中的方法

P l=new Plane();

 

l.fly();

//Plane继承P中的方法

Plane pl=new BigPlane();

 

pl.fly();

//BignePlane中的重写父类的方法

调用属性看变量的声明

多态:调用方法时可能会出现多种结果

多态分类:

静态多态:重载造成的,在类编译时就可以确定调用的是哪一个方法

动态多态:重写造成的,只有在直行到该行代码,才能确定执行的是那个类中的方法

this 与 super 的区别

共同点:

  • 用于引用对象:this 和 super 都是用于引用对象的关键字。
  • 在构造函数中调用: 两者通常在构造函数中使用。this 用于调用同一类中的其他构造函数,而 super 用于调用父类的构造函数。

不同点:

引用对象的范围不同:

  • this 引用的是当前对象的实例。
  • super 引用的是父类的实例。

用途不同:

  • this 主要用于处理同一类中的字段、方法或构造函数之间的引用,以区分成员变量和局部变量,或者在构造函数中调用其他构造函数。
  • super 主要用于在子类中调用父类的字段、方法或构造函数。在子类中,可以使用 super 关键字访问父类的成员。

语法不同:

  • this 可以出现在方法、构造函数和代码块中,并且可以用于调用其他构造函数、访问实例变量等。例如,this.method() 或者 this.variable
  • super 主要用于在子类中访问父类的成员,例如,super.method() 或者 super.variable

总的来说,this 和 super 在引用对象的范围、用途和语法上有一些共同点,但它们主要是用于不同的场景,分别处理同类中和父子类中的对象引用。

  • 15
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值