方法的重载:
1.在同一个类中
2.方法名必须相同
3.方法的参数个数不同或者类型不同
4.构造器可以重载
方法的重写:
1.必须要有继承
2.子类方法的返回值类型、方法名、参数列表与父类一样。
3.子类方法的修饰符不能小于父类方法的修饰符
方法的重写与重载的区别 (面试题)
重载:“两同一不同”,同一个类,同一个方法名,不同的参数列表,构造器可以重载
4种权限修饰符:
1.权限从大到小:public protected 缺省 private
static 随着类的加载而加载
this:
1.使用在类中,修饰属性,方法,构造器
2.表示当前对象
3.在构造器中使用this(形参列表)显示的调用本类中的重载的构造器
super:
1.相较于关键字this,可以修饰属性,方法,构造器
2.super修饰属性、方法:在子类的方法,构造器中,通过super.属性或者super.方法的形式,显示的调用父类的指定属性或方法。尤其是当子类与父类同名的属性,或方法时,调用父类的的属性,一定要用"super"
3.通过"super(新参列表)",在子类构造器中调用指定的父类构造器。
static:
1.可以用来修饰属性,方法,代码块、内部类
构造器的作用:
1.创建对象
2.给对象的属性赋值
面向对象的特征:封装、继承、多态
封装:
1.把属性定义成private。
2.提供setter或getter方法
继承:
1.通过使用extends关键字来定义
2.java中只可以单继承,一个类只能有一个父类,一个父类可以有多个子类
多态:
什么是多态?
1.子类对象的多态性
多态运行的条件?
1.要有类的继承
2.要有子类对父类方法的重写
格式:Person p = new Man();//向上转型
格式:Man man=(Person) p; //向下转型
编译时“看左边”,运行时“看右边”,多态性并不用于属性。
Instanceor:
格式:对象a instanceof 类A 判断对象a是否是类A的一个实例,是的话返回true
equals:
1.基本数据类型:判断值是否相等
2.引用数据类型:判断引用类型的地址值是否相等
equals和==的区别:
由equals的源码可以看出这里定义的equals与是等效的(Object类中的equals没什么区别),不同的原因就在于有些类(像String、Integer等类)对equals进行了重写,但是没有对equals进行重写的类(比如我们自己写的类)就只能从Object类中继承equals方法,其equals方法与就也是等效的,除非我们在此类中重写equals。
包装类(wrapper): (掌握)
8种包装类
boolean boolean
byte Byte
short Short
int Integer
long Long
char Character
float Float
double Double
基本类型转换成包装类----》(自动转型)
int i=10;
boolean b=false;
Integer i1=i;
Boolean b1=b;
包装类转换成基本类型----》xxxValue();
int i2=i1.intValue();
double b2=b1.doubleValue();
JDK5.0以后,自动装箱和拆箱
Integer i3=i2; //自动装箱
Double b3=b2; //自动装箱
int i4=i3; //自动拆箱
double b4=b3;//自动拆箱
基本数据类型、包装类------》 调用String类的valueOf()方法
int i1=10
String str1=String.valueOf(i1);
String类-----》基本数据类型、包装类 parseXxx()
String st1="i3";
int i3=Integer.parseInt(st1);
static关键字:
static修饰属性:
static可以用来修饰属性、方法、内部类
在类里面定义的类变量,独一份。大家共用
static修饰方法:
随着类的加载而加载。也是独一份。
可以通过 “类.方法()” 调用
final关键字 ——》修饰类、属性、方法
final修饰的类不能被继承。
final标记的方法不能被子类重写。
final修饰属性此属性就是一个常量。
抽象类:abstract——》修饰类、方法
1.abstract修饰类不可以被实例化
2.抽象类有构造器(凡是类都有构造器)
3.abstract不能用来修饰属性、构造器,私有方法、静态方法、final的方法
接口:interface
1,接口可以看做是一个特殊的抽象类,是常量与抽象方法的集合。不能包含变量,一般的方法
2.接口没有构造器。
3.接口定义的就是一种功能,可以被类所实现(implements)
4.实现接口的类,必须要实现它所有的抽象方法。
5.类可以实现多个接口。 -----》java中的类的继承是单继承
6.接口与接口之间也是继承关系。可以实现多继承。用”,“号分开
7.一个接口可以被多个类实现
内部类:
成员内部类(声明在类内部,方法体外):
局部内部类(声明在类内部,方法体内):
单例设计模式:
单例设计模式,对某各类只能存在一个对象实例,
/*
* 单例设计模式-->饿汉式
*/
public class TestSinglieton {
public static void main(String[] args) {
Singleton s1=Singleton.getInstance();
Singleton s2=Singleton.getInstance();
System.out.println(s1==s2);
}
}
class Singleton{
//1.私有化构造器,是的在类的外部不能够调用此构造器
private Singleton(){
}
//2.在类的内部创建一个类的实例,
static Singleton instance=new Singleton();
//3.私有化此对象,通过公共的方法来调用
//4.此方法只能通过类来调用
public static Singleton getInstance() {
return instance;
}
}
单例设计模式–>懒汉式
/*
* 单例设计模式-->懒汉式
*/
public class TestSingleton1 {
}
class Singleton1{
//1.私有化构造器,是的在类的外部不能够调用此构造器
private Singleton1(){
}
private static Singleton1 instance=null;
public static Singleton1 getInstance(){
if(instance==null){
instance=new Singleton1();
}
return instance;
}
}