Java基础之面向对象

Java面向对象思想

1.现实生活中

面向过程

吃菜:1.买菜-->2.洗菜-->3.炒菜-->吃菜

面向对象 : 

吃菜: 1.找炒菜对象-->吃菜

类:把一类事物中的静态属性(成员变量),动态行为(方法)统称在一起;

public class Person(){

String name;

int age;

public void play(){

}

}

对象:当前类的实例化,称之为对象

创建对象

Person person = new Person();

2.构造方法

定义:与类名相同且没有返回值

构造方法 --- 每一个类中都有一个默认不带参的构造方法;

规则:

1.方法名和类名相同

2.不存在返回值

普通方法:

修饰符  返回值类型  方法名(参数列表)

public void add(){

}

构造方法:

修饰符 方法名(参数列表)

public class Student{

        public Student(){

        }//无惨构造

        public Student(int a,int b){

        }//有参构造    

}

调用方式:创建对象时通过new语句调用。

作用:用来初始化操作。

调用自身的构造方法,用this(),;//this只能写在首行,且只能有一个

构造方法的执行顺序 super和this的举例

Java基础之面向对象_第1张图片

继承

好处:利于扩展,增加大代码的维护性

子类可以使用父类所有的成员(属性和方法);

子类的构造方法必须要先调用父类的构造方法;

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

super 关键字,必须写在子类的首行,用来调用父类的构造方法,如果没有,编译器会自动添加。

super也可以用来调用父类的方法,super.方法名();

如果子类的构造方法中没有指定调用父类的构造方法,那么编译器会自动为子类添加调用父类的无参的构造方法,如果此时,父类没有无惨构造,那么则报错.

方法的重载

规则:方法名相同,参数列表不同,跟返回值没关;

作用:解决了代码通用性的问题

方法的重写

规则:修饰符、返回值、方法名相同、参数列表相同。重写必须在继承过后才能使用.

重写的作用:当父类中的方法对子类来说不在适用。

this 关键字

this:当前对象的引用
作用:当局部变量与成员变量相同时,区分成员变量和局部变量。

修饰符的权限

public:当前项目中都能使用

protected:当前包下及子类能使用

缺省 : 当前包下能使用

private:当前类能使用

附上下图 能更好的理解:

Java基础之面向对象_第2张图片

static关键字 

修饰符,静态的:能修饰变量、方法、类

1.被static修饰的变量,称为静态变量,也可叫全局变量,它跟类有关跟对象没有关系,单独存储在方法区,不用static修饰的属性叫成员变量。

成员变量和静态变量的区别:

静态变量跟类有关,在类加载时被初始化,跟对象无关

成员变量跟对象有关,必须使用对象来使用,new phone();

静态方法里面不能存放非静态的属性;

静态属性直接使用类名.属性使用。

2.静态方法直接使用类名.方法名使用

            ----一般工具类中的功能块都会写成静态方法

3.static块

1.优先于main方法

2.一般用于加载音视频资源、图片都会采用静态加载

static{

        。。。

}

5.静态变量的缺点:静态变量在此类加载时会被分配空间,直到程序结束时空间才会被回收

final关键字

final :最终的,可以修饰变量,方法,类

final 修饰变量:最终的变量,仅能赋值一次

        修饰的是成员变量必须初始化

        修饰的是局部变量需要在使用前赋值一次

final修饰方法:最终的方法,禁止重写

final修饰的类:最终的类,禁止扩展,不允许继承  如:String

造型

向上造型:

向上造型:在Java中,支持声明类型为父类类型,实际赋值类型为子类类型

Animal animal  = new Cat();

允许将范围小的数据赋值给范围大的数据,系统会自动进行转换,将这种转换称为:向上造型(向上转型);

向上造型仅仅改变了数据类型,实际内容不变;

仅使用父类中的成员,那么可以直接声明为父类类型 -- 向上造型,在使用向上造型后,还想使用子类独有成员,则需要向下造型

向下造型:如果想要使用子类的独有属性则需要转换为子类实例,在通过子类实例进行调用称为向下造型(向下转型)

多态

多态产生的条件:

1.需要继承

2.必须重写

3.数据类型相同, 实际赋值不同.如:Animal a1 = new Cat();

抽象

定义:使用abstract修饰的类、方法、变量称为抽象

作用:在搭建项目结构时,如果不清楚当前具体的实现方式,将父类中的方法抽象化,强制子类进行重写,项目搭建时一般会将父类作为抽象类,将行为抽象化,之后再完善.

1.只要类中有抽象方法,那么类必须是抽象类,抽象类中可以没有抽象方法。

2.继承抽象类,子类要么实现父类的所有方法,要么变成抽象类

3.抽象类不能被实例化

4.抽象类有构造方法

接口

定义:使用interface修饰的类 称为接口,接口是一个特殊的抽象类。

作用:接口在开发过程中可以快速分离工作内容,接口是一个规范,定义了一个接口,开发者就可以继续他的业务逻辑代码了。

1.接口中的变量只能使用public 修饰  即使不写,默认为public static final ==>常量

2.接口中没有构造方法

3.一个类可以实现多个接口

4.接口可以实现多继承//基本不用

5.接口中的方法,是子类来实现的,接口中的方法默认是public abstract 返回类型 方法名()类型。static defalut abstract 默认只能使用一种

你可能感兴趣的:(Java基础之面向对象)