1.三大特征:
封装:把数据封装起来,不让外部随便访问
多态:同一事件可以有多种做法
继承:我们都是动物,我们有血有肉,有共同点
2.类和对象的区别
类是模板,如人类,狗;
对象是类的具体实例
3.权限
public :该项目中所有类均可使用
protected:只能同一个包的类调用,其他包的类使用必须是其子类
private :仅供该类使用,实现了封装
default(默认):只有在同一个包中使用
4.类包括
属性 如名字,年龄等
行为 如吃东西,跑步等
构造函数
5.类的定义
class 类名{
void 方法名(参数){
方法体;
}
}
6.内部类
使用内部类的好处是:更好的封装,可以访问外部类变量
创建内部类的实例:
A a=new A();
A.B b=a.new B();
Inner classes(普通内部类) :
可以使用private public protected 修饰(如果使用public可以通过外部类访问内
部类)
形式:
class Out{
class Inner{
}
}
Method local Inner classes(方法局部内部类):定义在方法里面
形式:
class Out{
public void run(){
class Inner{
}
}
}
AnonymousInner classes:匿名内部类
interface class Food{
void beEat();
}
public class Cat{
public void eat(Food food){
food.beEat();
}
public static void main(String args[]){
Cat cat=new Cat();
Food food = new Food() {
@Override
public void beEat() {
// TODO Auto-generated method stub
System.out.println("我被吃了");
}
};
cat.eat(food);
}
}
7.静态static
被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。
只要这个类被加载,就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。
8.final常量
final 加到变量上,就成为常量
final加到方法前,这个方法就不能被子类覆盖(override)
final加到类前,表示这个类不能被继承
9.数据访问器 get() set()
如果要访问类中私有变量则使用数据访问器。
10.instanceof 以及向上转型
instanceof运算符是用来在运行时指出对象是否是特定类的一个实例,返回值为Boolean
向上转型 A b=new B();
B是A的子类,A中的A1()方法被B子类的A1()方法所覆盖,而B子类中的A2()方法则失效。(通俗的讲就是创建一个A的子类B,然后将B强转成A,b只能使用A中的方法,但已经被覆盖。)
public class Test {
public static void main(String ar[]){
Dog dog=new Dog("哈士奇");
Cat cat=new Cat("加菲猫");
runRunKan(dog);
runRunKan(cat);
}
public static void runRunKan(Animal animal){
System.out.println("==================");
System.out.println("现在来比赛的是"+animal.name);
animal.run();
System.out.println(animal.name+"的成绩是"+Math.random());
if(animal instanceof Dog){
System.out.println("这是一条狗");
Dog d=(Dog)animal;
d.bite();
}else if(animal instanceof Cat){
System.out.println("这是一条猫");
Cat c=(Cat)animal;
c.catchMouse();
}
}
}
Dog以及Cat类继承与Animal类
1.abstract(抽象)
一个类是abstract类则不能被实例化,如果一个类不是abstract类则不能有abstract方法。
abstract类的方法通常是abstract类。
将abstract加在方法前面则变成抽象方法。
如果继承了次抽象类,则子类必须实现父的抽象方法。
public abstract class A {
abstract void aa();
abstract void cc();
abstract void dd();
}
2.interface(接口)
接口里面字段是final型的 方法是abstract
default:实现接口方法
public interface Eat(){
void eatChineseFood();
default void eatWestFood(){
System.out.println("还挺不错");
}
}