面向对象二

static关键字

1.静态的意思,用来修饰成员变量和成员函数
2.静态的特点:
随着类的加载而加载
优先于对象存在
对所有对象共享
可以被类名直接调用
3.静态的注意事项
静态方法只能访问静态成员:因为静态的内容是随着类加载而加载的,他是先进内存的。
静态方法中不能使用this,super关键字
主方法是静态的
public static void main
public :公共的意思,最大权限修饰符
static;由于jvm调用main方法的时候,没有创建对象。只能通过类名调用,所以main必须被static修饰。
main:程序的入口。
静态变量和成员变量的区别
调用方式:静态变量也成为类变量,可通过类名调用,也可通过对象名调用,这个变量属于类。成员变量也称为实例变量,只能通过对象名调用,这个变量属于对象
存储位置:静态变量存储在方法区中的静态区;成员变量存储在堆内存。
生命周期:静态变量随着类的加载而存在,随着类的消失而消失。生命周期长。成员变量随着对象的创建而存在,
与对象的相关性:静态变量是所有对象共享的的数据,成员变量是每个对象所持有的数据。
静态的优点和弊端
优点:对对象的共享数据进行单独空间的存储,节省内存,没有必要每个对象都存储一份。可直接被类名调用。
避端:生命周期过长,随着类的消失而消失。
访问出现权限,即静态虽好但 只能访问静态
为什么使用静态;
当所有对象共享某个数据时,就把这个成员变量定义为静态修饰的。
当某个方法中没有访问该类的非静态成员,就可以把这个方法定义为静态修饰。
静态生命周期比较长,一般不推荐使用
静态代码块:
它只执行一次,比main还先执行
执行顺序:
静态代码块—构造代码块----构造方法

单例设计模式

设计模式:解决某类问题行之有效的方法,是一种思想,是规律的总结。
用来保证某个类在内存中只有一个对象
保证唯一性的思想即步骤
为了避免其他程序建立该类的对象,先禁止其他程序建立该类对象,即构造函数私有化。
为了其他程序访问到该类对象,须在本类中创建一个类私有对象。
为了方便其他程序访问到该类对象,可对外提供一个公共访问方式
比如API中的Runtime类就是单例设计模式。

懒汉式:延迟加载,多线程同时操作时可能出现线程安全问题,解决线程安全问题可以加同步来解决,但每次都要比较锁,效率慢,可以加双重判断来提高效率。
饿汉式:类一加载进内存就创建好了对象;
class Student
{
private Student(){}
private static final Student s=new Student();
public static Student getIntance()
{
return s;
}
}
1.判断实例是否为空,避免每次走synchronized
2.加synchronized
3.判断实例是否为空。
class Student
{
private Student(){}
private static final Student s;
public static Student getIntance()
{
if(snull){
synchronized{
if(s
null){
s=new Student();
}
}
}
return s;
}
}

MATH类的使用

1.数学操作类;该类没有构造函数,方法均为静态的
2.成员方法
abs:返回绝对值
ceil :返回大于等于参数的最小值,并等于某个整数
floor:返回小于等于参数的最大值,并等于某个整数
max:两值中最大值
min:两值中最小值
round:四舍五入
pow(a,b):返回a的b次幂的值
random:返回[0~1)

Random类的使用

产生随机数的类
构造方法Random()
Random(long seed)
成员方法
int nextInt() 返回下一个伪随机数
int nextInt(int n)返回一个伪随机数,在0(包括)和指定值(不包括)之间均匀分布的int值。

Scanner类的使用

获取从键盘输入的数据
sc.nextInt();获取整型数据
sc.nextLine();获取字符串数据

继承

1.把很多类的相同特征和行为进行提取,用一个类来描述,让多个类和这个类产生一个关系。
这样的话,多个类就可以省略很多代码,这个关系就是继承。Java中用extends关键字表示。
2.继承体系
多个具体的对象,不断向上抽取共享的内容,最终形成一个体系。这个体系叫做继承体系
继承体系的学习和使用原则
学习顶层的内容,因为他是整个体系的共性内容。
创建子类使用,也就是使用底层的具体对象。
3.继承的特点
Java中只有单继承,没有多继承
Java中可以有多层继承
4.继承的好处
继承的出现提高了代码的复用性
继承的出现让类与类之间产生关系,提供了多态的前提。
5.子父类中的成员关系
成员变量:
子类方法中使用一个变量时:
首先在方法的局部变量中找这个变量,有则使用。否则在本类中找成员变量,有则用,否则,在父类中找成员变量,有则用。否则,报错。
成员方法:
用子类对象使用一个方法时。
首先在子类中找这个方法,有则用。否则在父类中找这个方法,有则用。否则,报错。

重载和重写

重载:在同一类中,方法名相同,参数列表不同。
重写:在不同类中。方法申明相同(返回类型、方法名、参数列表均相同)
重写要注意
子类方法的访问权限要大于等于父类方法的访问权限。
子类实例化的过程
子类创建对象时,会先去创建父类的对象。
默认调用父类的无参构造
子类构造方法中,第一行默认是super
因为他继承父类的成员使用,使用前这些成员必须初始化。而他们是父类的成员,所以,必须通过父类进行初始化。所以会先创建一个父类对象。
当父类没有无参构造时,必须使用this或者super调用其他的构造方法。
this:代表本类对象的引用
super:代表父类的存储空间

final关键字

1.最终的意思,可以修饰类,方法,变量
2.final修饰的类不能被继承
final修饰的方法不能被重写
final修饰的变量是一个常量
内部类只能访问被final修饰的局部变量

抽象类

1.多个类有相同的方法申明,但是方法体不一样。这个时候,我们考虑把方法申明进行抽取。让子类继承后,自己去实现方法体。没有方法体的方法,我们需要用抽象标志一下。抽象的关键字是:abstract。
2.包含抽象方法的类就是抽象类
3.抽象类的特点:
抽象类和抽象方法都要用abstract进行修饰
抽象类不能实例化
抽象类中不一定有抽象方法,由抽象方法的类一定是抽象类。
4.抽象类中数据的特点
成员变量:可以有变量,也可以用常量
成员方法:可以有抽象方法,也可以有非抽象方法
构造方法:虽然本身不能实例化,但可以给子类实例化使用。
抽象关键字abstract不可以和哪些关键字使用
private:私有内容不能被子类继承,所以不能重写,而抽象方法要求被重写
final:其修饰的方法不能被重写
而抽象方法要求被重写
static:假如一个抽象方法能通过static修饰,那么可通过类名调用。而抽象方法没有方法体,这样的调用没有意义
抽象类可以没有抽象方法,其作用只是为了不让别的类建立该抽象类对象。

接口interface

1.当一个类中的方法都是抽象的时候,Java提供另一种表示方式,叫接口。
用interface表示,类和接口关系用implements表示。
2.接口成员特点
成员变量:是常量,默认修饰 public static final
成员方法:都是抽象的,默认修饰public abstract
3.关系
类与类的关系是继承关系。只能单继承,可以多重继承。
类与接口的关系
是实现关系。类可以多实现接口。
类在继承一个类的同时,可以实现多个接口。
接口与接口的关系,
是继承关系。接口可以多继承接口。
4.接口的特点
是对外暴露的规则
是功能的扩展
接口的出现降低耦合性
耦合(类与类之间的关系)
内聚(类完成功能的能力)
接口可以多实现。
5.接口和抽象类的区别
抽象类只能单继承
接口可以多实现,接口的出现避免了多继承的局限性
抽象类的数据特点:
成员变量:可以是变量,也可以是常量
成员方法:可以是抽象方法,也可非抽象
构造方法:有
接口的数据特点;
成员变量:是常量。
成员方法;抽象
构造方法;无。
抽象类中定义的是继承体系中的共性功能。
接口中定义的 是继承体系中的扩展功能。

多态

1.同一对象,在程序的不同时刻的多种运行状态。
2.多态的前提
存在着继承或者实现的关系
有方法的重写
父类(接口)引用指向子类(实现)对象
3.多态的好处和避短
好处:提高了程序的扩展性和后期可维护性
弊端:虽然可以预先使用,但是只能访问父类中已有功能,运行的是后期子类的功能内容。不能预先使用子类中定义的特有功能。

instance of 关键字

用于判断某个对象是否是某种类型
格式:
对象名 instance of 子类(实现)名

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值