面向对象适合初学者

类之间的关系

1继承

使用extends表示
类和类之间是单继承
class A{};
class B extends A{};
接口和接口之间是多继承,多个用逗号隔开。
interface C{}
interface D{}
interface E extends C,D{}

2实现

类和接口之间是多实现,多个用逗号隔开。
class 类名 implements 接口,接口,…{}
class F implements C,D,E{}

3依赖

局部变量保存了另外一个类对象引用,方法执行完,关系就不存在了。

4关联

关联关系,成员变量保存了另外一个对象引用,关系是长期的。

5聚合

是关联关系,但不手动创建对象,需要调用处传递,就与组合不同,即使test对象销毁,调用处依然保留了person对象的引用,所以person就不是垃圾,不会被回收,还可以复用。
class Test{
Person person;
//构造方法
public Test(Person person){
this.person=person;
}
}
class Person{}
在main方法中
Person person=new Person();
Test t1=new Test(person);
System.out.println(t1.person);

6组合

是关联关系,但对象是自己创建的,person对象的生命周期会和test对象的生命周期绑定。当创建多个test对象,一般会创建多个person对象,因为person对象是手动创建的,意味着没有其他的地方保存person对象的引用,当test对象销毁的时候,该person对象也被视为垃圾,等待被回收。
class Test{
Person person=new Person();
}
class Person{}

内部类

1概述

当一个事物的内部,还需要一个完整的结构进行描述,而这个内部完整结构,又只为外部事物提供服务,那么这个内部完整结构最好使用内部类。
内部类优点:可访问外部类的私有属性。

2成员内部类

成员内部类,可看作成员变量。
1.可使用访问权限控制修饰符。
private class InnerClass{}
2.不能有静态声明。
3.可直接访问外部类所有属性。
4.内部类类名,编译后:外部类类名$内部类类名
如何创建及使用:
1.创建外部类对象
2.创建内部类对象
3.访问属性

3静态内部类

静态内部类,可看作静态变量。
1.可声明静态属性和成员属性。
2.无法直接访问外部类的成员属性,需要创建外部类对象才能访问。
3.如何创建及使用:
InnerClass1 inner1=new OuterClass_01.InnerClass1();
调用:外部类.内部类.方法();

4局部内部类

局部内部类,可看作局部变量
1.通过局部内部类访问外部方法中的局部变量,该变量加final修饰,但1.8开始,final可以省略。
2.不能使用权限控制修饰符,不能使用static
3.类名:外部类类名$1内部类类名
若内部类类名一样,就是外部类类名$2内部类类名以此类推.
4.静态方法中的局部内部类,无法直接使用外部类中的成员属性。
成员方法中的内部类,可以直接访问外部类中的所有属性。

5匿名内部类

在方法调用的时候,需要实现一个接口的实现类对象,可以不写实现类,直接写一个匿名内部类。
1.类名:外部类类名$1, 外部类类名$2 以此类推
2.优点:少定义一个类,而且能访问外部类中的私有化属性。
3.缺点:无法复用。
test(new IUserService() {
@Override
public void login() {
System.out.println(“登陆成功”);
}
});

设计模式

设计模式:在编码实践中,发现很多编码被经常用到,于是总结出来,形成固定的结构,该结构一般代表了最佳的实现方式,让当前对象只能创建一个实例化对象。

1单例模式

让当前对象只能创建一个实例化对象
1.要先创建对象的数量,意味着不能让客户直接操作构造方法,所以需要构造方法私有化。
2.对外提供一个用于获取对象的方法,没有入参,出参是当前类类型,静态方法。
3.创建一个静态变量,用来保存实例化之后的对象。
结合对象的创建时机不同,分为两种情况:
1.加载阶段创建对象,称为饿汉模式。
2.用到的时候创建对象,称为懒汉模式。
饿汉模式:
public class Singleton_01 {
private static Singleton_01 s=new Singleton_01();
public static Singleton_01 getInstance(){
return s;
}
}
懒汉模式:
public class Singleton_02 {
private static Singleton_02 s=null;
public static Singleton_02 getInstance(){
if(s==null){
s=new Singleton_02();
}
return s;
}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值