总结上周 JavaSE

封装:隐藏,封装数据实体

要求:

1.   属性是私有的(在其他类中不可见)

2.   提供一套get/set的公用方法

3.   根据需要可以在方法中添加其他逻辑

Java中的特殊函数:

1.    构造函数:用于创建对象,和初始化对象数据

特点:

1)    函数名必须和类名一致

2)    构造函数没有返回值,连void都不能有

3)    构造函数可以有0个或多个,多个构造函数参数列表必须不同

4)    构造函数必须跟着new关键字一起使用

new 关键字在计算机中用于开辟空间

 

public Users(){} :默认构造函数,如果在,类中没有显式的定义任何构造函数,那么计算机会在创建对象时,隐式的添加默认构造函数,但是如果类中显式的定义了构造函数,那么计算机就不会隐式创建默认构造函数。

 

建议:一般的实体类至少有2个构造函数(默认和全体初始化)

 

2.toString 函数:用于在输出对象时的数据字符串格式

在程序中打印输出对象时,计算机会隐式的去调用对象的toString方法

 

2.    静态函数:使用static修饰的函数,可以直接使用类名调用(放在静态域里面,普通函数放在堆栈里面的)

语法:类名.函数名();

静态函数一般放在工具类



 

 

 

单例模式:让一个类只能创建一个对象

设计模式:设计经验,是一套固定的设计代码经验

步骤:

1)让构造函数私有

2)提供static 修饰的函数返回一个对象

固定模式:

public class OOTest {

    private OOTest(){}

    //饿模式

    private static OOTest oo= new OOTest();

    publicstatic OOTest getOO(){

       returnoo;

    }

    //懒模式

    private static OOTest oo = null;

    public static OOTest getOO(){

       if(oo == null){

           oo = new OOTest();

       }

       returnoo;

    }

}


Exception in thread "main" java.lang.NullPointerException

    atcom.mantou.test_2016_11_22.Work.check(Work.java:70)

    atcom.mantou.test_2016_11_22.Work.login(Work.java:30)

    atcom.mantou.test_2016_11_22.Work.map(Work.java:17)

    atcom.mantou.test_2016_11_22.Test_main.main(Test_main.java:7)

以上报错,表示空指针异常,

 

面向对象-----继承,提高代码的重用性

父类(基类)    子类(派生类)

子类通过extends关键字继承父类所有非私有的属性和方法

语法:

Public class 类名 extends 类名{

}

Java只允许单个继承

重载:  (所有类中都可以使用)

相同方法名不同参数列表的方法。 (重载只和参数列表有关系和返回值没有关系)Eg:构造函数

重写(也称覆写):(必须存在继承关系,而且只能在子类中重写父类的函数)

相同方法(返回值类型,参数列表,方法名都相同)不同实现(方法体)

所有的类都默认隐式继承Object

如果子类重写父类函数,那么在调用时计算机会先在子类查找,如果存在就直接使用子类函数,如果不存在就使用父类函数。

 

建议:在子类重写父类函数的时候,建议使用Override 注解验证

this表示当前类对象,super表示对父类的引用

抽象类:有抽象方法类一定是抽象类,但是抽象类不一定有抽象方法

继承抽象类的子类必须重新父类的所有抽象方法

使用Abstract 修饰的类:

Public abstract class 类名{}

抽象方法:

修饰符abstract 返回值类型 函数名(参数列表){}

 

接口:特殊的抽象类,在1.7以前的接口中的属性和函数都是抽象的

接口中的属性必须定义为  public static final   数据类型   变量名  =   值  ;

属性名必须全部大写!

final 用于修饰常量,常量只能初始赋值一次,其他地方不能重新赋值

定义接口语法:

Public    interface   接口名{}

接口中的函数默认就是 abstract 的,可以省略不写

 

Java是单继承的,但是可以实现多个接口

实现接口的语法:(可以不用继承父类,直接实现接口)

public class    子类名  extends 父类名  implements 接口1,接口2…{}

使用建议:先定义接口(规则),多个接口的公用部分使用抽象类

 

继承中构造函数执行顺序:没有父亲那来儿子,

创建子类对象时,java会隐式执行父类的构造函数

super():表示调用父类构造函数,在子类中计算机默认调用父类无参构造函数


多态:相同方法不同实现(重写的具体使用

Java 中体现了多态性:重写

实现多态的思想:父类的引用指向子类的实例,接口引用指向接口实现类实例

eg:  People peo = new Student();

没有继承,就没有多态

父类引用只能调用父类存在的函数,在运行时java或先去子类中查找是否存在重写的方法,如果存在就直接调用子类函数,如果不存在才调用父类函数

 父类引用不能调用子类特有的函数,如果想要调用只能通过向下转型,让子类引用调用自己的函数注意在强制转换类型前都必须进行类型判断

public void job(People peo) {

    peo.show();

if(peo instanceof Student){

       ((Student)peo).play();

    }else if (peo instanceof Teacher){

       ((Teacher)peo).play();

    }

}

判断语法:

(); 实例 instanceof   类型  :判断实例指向的数据类型是否属于指导类型 

 

向上转换是自动转  :People peo  = new Student();

向下转型必须强制转换 : Student stu = (Student)peo

 

Student stu = new Student();

在堆中开辟空间生成Student对象,内存自动生成一个标识地址,将地址赋值给栈中的stu变量

”==”是比较栈中的值相等

Equals 比较的是堆得值相等





面向对象编程是Java里面的大头, 封装,继承,多态等对面向对象编程起到了很大的帮助。  封装简单的说就是讲属性元素通过get  和set方法封装起来,只能通过get,set方法调用,这样增加了代码的安全性。  其中还有单例模式, 也就是让一个类只能创建一个对象,这种模式有效地增强了代码的安全性。  


然后就是继承,java里面只能实现 单继承。 java里面可以实现多接口。 说白了,继承可以有效地减少代码重用性!! 继承里面还包括抽象类的继承,重写等知识点。


然后就是多态了,简单的说,没有继承就没有多态。多态是实现重写的一种。 






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值