7.29 day12jave

类的一般形式

类:事物的集合和抽象。代表这类事物所共有的一些行为和属性
class 类名{ //类
类型 变量名; //属性
类型 方法名(参数){ //方法
方法内容
}
···
}
修饰符:private-----------只有在本类中可以看见
protected---------在本类或者是同一个包里面可见
public------------对于所有类都可见
默认(无修饰符)–在本类或者是一个包里面可见//有别于protected
父类=超类=基类、子类=派生类

 

方法

无返回值,定义必须写void
有返回值,则定义的方法类型必须和方法体内返回值的类型相同
例: public String returnString(){
return “返回值是字符串类型”; }
主方法:程序的入口。public static void ain(String[] args){ }
构造方法:
用于初始化参数。所有的数字变量全部设置为0。所有的boolean类型全部设置为false
所有的对象类型赋值为null。
People p=new People(); //People()->构造方法,编译器自动初始化People类内的变量
也可以自定义构造方法(People())没有返回值,且编译器不提供默认的构造方法(自写)
有参的构造方法:

People(String name,String sex,int age){
this.name=name;
this.sex=sex;
this.age=age; //this:当前类
}
People p=new People(" "," ", );
方法的重载:
具有相同的方法名称,但具有不同的参数列表(参数的数量、类型、次序等)
构造方法重载://简化->this(name,age); //调用本类中其他构造器

super();//调用副类构造器(object类)

对象(类的实例)

com=new Computer();
即Computer com=new Computer();
对象类型的参数传递:引用类型的传递
基本数据类型作为参数直接操作,引用类型作为参数,操作的是引用指向的堆内存中的对象

Animal a= new Animal();
prinftAnimal(a);//声明的prinftAnimal(Animal a)函数

关键字
static:静态变量->属于类的变量//可以直接访问 类名.变量名
静态方法->用static修饰的方法,访问同静态变量,不能访问非静态变量//非静态方法可以访问静态变量
静态常量-> public static final int x=1;
final:
①修饰恒定不变的变量(不可改变且大写)
②修饰方法->任何继承类无法重写覆盖该方法,但可以重载 #继承class xxx extends xxx
③修饰类->该类不能作为任何类的父类,且类中的方法全被定义为final类型

包:命名包/未命名包(一般不用)

 

三大特性封装、继承、多态
封装:通过private对信息进行封装,通过setXXX()方法进行访问
//方法中可以加入条件,即对用户开放的信息进行限制

继承:class xxx1 extends xxx2 //extends只能继承一个类,JAVA不支持多重继承
在xxx1中可以调用父类的方法,可以重写继承类(父类)xxx2中的方法,也可以增加自己的方法
子类继承父类,编译器默认加上 super(); 调用父类的无参构造器(先父类再子类)
#调用有参构造方法必须自己加 super(参数);
#super();必须放在方法第一个语句

       Tiger a=new Tiger()----Animal a=new Tiger

 

抽象类->为子类提供一个规范(子类可定义不同的方法体)
public abstract class 类名{类体};/抽象类,抽象类中至少有一个抽象方法(可以有普通方法)
public abstract void test();//抽象方法没有方法体,即规范(由继承的子类定义方法)
应用:
@Override//检测是否重写成功
一个类继承了抽象类,就必须重写抽象类中的所有抽象方法(如果为抽象类继承抽象类则不用)
#Animal instanceof mouse 判断该继承Animal的类是否为mouse类(instanceof)

     内部类:一个类被嵌套定义在另一个类中,即为内部类,包含内部类的类为外部类
内部类相当于外部类的成员变量
Outer out=new Outer();//先构造外部类
Outer.Iner in=out.new Inner();//才能构造内部类
匿名内部类:实现类的时候没有名字**************继承父类并重写方法,即为子类
局部内部类:在方法等局部位置的类,局部内部类可以访问局部(方法中)的final类型的变量和外部类所有成员变量【为什么只能访问final类】
静态内部类:内部类有static修饰符的内部类,
内部可以声明static成员变量(非静态内部类不可以)
不可使用外部类的非静态成员变量
创建对象时,不需要其外部类的对象#StaticInner.Inner i=new StaticInner.Inner
??为什么内部类可以使用外部类的成员变量
引用外部类的对象:内部类:this.count 外部类:Outer.this.count
内部类的继承:

public class Test extends A.B{
public Test(A a){
a.super(); } } //先对外部类进行实例化

posted @ 2021-07-29 20:13  清梦韶华  阅读(26)  评论(0编辑  收藏  举报