面向对象的三大基本特征(纯口述)

1、面向对象的概念

面向对象是一个抽象的过程,先跟面向过程做对比,比如把一只大象装进冰箱,面向过程只注重步骤,先打开冰箱,把大象放进去一个过程。

面向对象是注重在于操作对象,冰箱、大象都可以看作各自一个独立的对象,面向对象就要思考如何把大象装进冰箱,冰箱的属性有长宽高重量...,大象的属性也有体重,名字,年龄等,可以思考各自功能也就是利用冰箱的装大象的方法,大象有吃东西的功能,叫的功能,还有走的功能,这些在程序中都叫做方法,要想更加理解面向对象首先了解类与对象的关系。

2、什么是类与对象

用来描述一类事物,东西,有着相同的特征或者是一个分类,比如人类、球类、职业类,都可以细化到具体个体事物中去,而对象就是类的具体个体事物对象,在java中个体事物术语称为实例对象。比如职业类、教师就是一个类的实例对象。

3、怎么创建一个对象呢?

记住一句话:以类为模板创建对象! 比如以教师类创建了一个英语老师对象出来。

创建语法:new  类名(); 

举例:Teacher teacher=new  Teacher();

4、如何操作对象的属性跟方法

对象的属性是  对象名.属性=赋值、对象名.属性 进行赋值进行操作。

扫描二维码关注公众号,回复: 4097512 查看本文章
<strong> class Student{//设计一个学生类
 
    int age; //年龄 
    int weight; //体重
    String name; //姓名
   public void eat(){ //无返回值
     System.out.println("该类有吃的功能"); 
 }

public class TestStudent{

 public static void main(String[] args){

           Student stu=new Student();//以类创建一个学生对象

            stu.age=18;  // 对象名.属性=赋值

            stu.name="阳彦刚";

            stu.weight=130;

            stu.eat();//调用吃的方法

            System.out.println("我的名字叫"+stu.name+"今年"+stu.age+"岁");//取值 对象名.属性 

}

} </strong>

封装:

封装的概念: 简单的就是打包,比如手机的硬件固定在一个贴合里。从设计者到使用者的一个过程

1.1怎样达到封装呢?加上访问权限修饰符

private    同类

默认不写   同类+包

protected  同类+子类+同包

public     同类+同包+其他包

private(私有的,只能在当前类才能使用) < 默认不写<protected<public (公共的)

一般比较常用:private  public

1.2标准的javabean(标准的java类):

1.类被public所修饰

2.提供一个无参数的构造方法

3.字段都是private修饰

4.给每个字段提供一个setter和getter方法

1.3注意: 如果你的字段是布尔类型的话

getter方式: is字段(字段首字母必须大写)

this介绍

1.1用处:this:看当前方法是被哪个对象所调用,谁调用我,我就属于谁

this:表示当前对象

this有什么作用:

1. 解决成员变量和局部变量的二义性

2. this可以调用构造方法      调用构造方法的时候,必须要在构造方法中第一句

3. this可以作为参数进行传递,也可以作为返回值进行返回

继承:

2.1概念 :子类继承父类的过程,继承者可以拥有父类全部方法属性。父类(超类,基类,根类),子类(派生类,拓展类,一个子类只能一个父类

2.2特点:类与类之间只是单继承不能多继承,可以间接继承(没有直接继承的父类),直接继承(有直接继承的类)

2.3好处提高代码复用性,子类只需要写特有的功能或者字段可以把公共的代码 抽出到父类里面

2.4:继承语法格式: class A extends B

2.5注意:子类能继承父类哪些东西?

字段(属性)  方法  ----->前提都是不能被private修饰的

2.6构造方法是不能被继承的每个类都有1个基类: Object 类  ,如果没有看到显示的继承,那么它隐式继承了 Object类(每个类都使用object作为超类,所有对象(数组)都实现这个类的方法),属于lang包,无需导5个线程的方法,1一个反射的方法,clone finallize(GC)

//返回:类的全限定名@哈希值的16进制形式

Public String toString()

{return getClass().getName()+"@"+Integer.toHexString(hashCode())}

public native int hashCode();//使用native修饰表示实现该方法使用的非java语言

//返回 == 判断的结果

public boolean equals(Object obj){ return this==obj}

方法覆写(覆盖、重写、Override)

为什么要覆写

当父类中的一个行为不满足子类需要的时候,在子类中覆写父类中的方法

3.1概念:

发生在继承中,子类对父类的方法重写,继承父类能用的方法同时也会有不合适的方法,所有需要子类重写该方法。

3.2好处:既可以拥有父类属性方法、也可以给自己重写有用的方法。

3.3要求:在子类中声明方法,与父类中某个方法的方法签名一致,权限修饰词不小于父类方法的权限修饰词,返回值类型不大于父类方法的返回值类型。不能重写:static修饰的  private修饰的

3.4重写经典掌握:

自定义类中toString方法与equals方法的重写:

 

 

 

规范:重写toString-->返回每一个属性名称以及对应的值

      重写equals  -->如果所有属性的值都相等则返回true,否则返回false.

Super:就一个关键字

  1. 使用场景:super.属性/方法--->调用父类的属性/方法

      访问父类中的private属性   在父类提供getter/setter

2. 在子类构造方法中调用父类的构造方法(父类构造方法访问自己的private属性)在子类构造方法中调用getter/setter

  3.注意:

(1)只能在构造方法中的第一行。

  (2)不能与this同时存在否则会报错

(3)如果没有显式的this或者super则在构造方法的第一行有默认代码:super();

 (4)判断继承关系中各个构造方法的执行顺序

(5)父类无无参构造方法,在创建子类对象会报错。如果在创造子类构造方法,有了显示的super(有参列表)或this(有参列表),隐式的无参super(),会失效。

4.多态:

4.1概念:一个变量在编译期是一个类型在运行期是另一个类内存分析

注意:使用多态时,子类与父类有相同属性(以编译期为准,以左边为准)

4.4画图体现

4.5语法格式  

父类 子类名=new 子类();//条件:一个建立在继承关系中

4.6多态方法调用以及参数传递(很重要)


 

猜你喜欢

转载自blog.csdn.net/Yangyg_0818/article/details/80891269