1类和对象类的创建

  类的定义:

class 类名{
所含变量定义;
}

例:

class Customer{
  String name;
  String sex;
  int age;
  }

对象实例化:类名 对象名=new 类名();

例:

Student zhangsan= new Student();

类名习惯上是以大写字母开头的名词。如果有多个单词 组成, 每个单词第一个字母应该大写(骆驼命名 法)示例: DemoClass

2、方法和方法重载

成员方法定义: 访问修饰符类型 返回值类型  方法名(参数列表){

方法体;
}

例:

Class Student{
  String name;
  String sex;
  int age;
  void display(){                   //定义成员函数display() 
     System.out.println("姓名:"+name+" 性别:"+sex+" 年龄:"+age);
 }
}

习惯上方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头。示例: demoFunction

构造方法:作用是创建对象,对象初始化,

(1)函数名称与类的名称相同

(2)不含返回类型

构造方法定义:

Public 类名(){} //当有有参构造的时候无参默认方法建议写出来,不然会消失
Public 类名(参数列表){}//可以再对象初始化的同时进行属性赋值
一旦有有参构造,无参构造系统不再默认为空

this指针:

例:

class A{          //定义类A

String name;      //定义类的成员变量name

A(String name){ //定义带参构造函数

this.name=name;  //函数内部的变量和类的成员变量重名时,用this来标记该变量属于类的成员变量

}

}

使用构造函数:类名 对象名=new 类名(传给构造函数的参数列表)

方法重载:

在同一个类中,方法名相同,参数列表不同(类型、数量、顺序

3、封装

主要解决安全问题;

访问修饰符

public:全工程=都可见范围最大
protected:包级私有+子类可见
默认:在同一个包的所有类可见 
private:只有本类可见、范围最小

修饰符高低:public>默认(不写)>protected>private

static关键字
加static的属性叫类属性:全局变量,目的就是无论那个对象或者整个类型来改变属性的值,都会对其他对象或者整个类造成影响,可以在对象创立前访问

静态变量:

静态变量定义:static 数据类型 变量名;

静态变量的访问:常用 “类名.静态变量名“ 来访问  或(“对象名.静态变量名”来访问(少用))

静态函数

注:静态函数不能访问非静态成员数据(静态函数内部没有this指针)

静态函数定义:static 返回值类型  方法名(参数列表){

}

静态函数访问:常用 “类名.函数名”来访问,也可用”对象名.函数名“来访问(少用)

 静态代码块:

 当类被载入时静态代码块被执行,且只被执行一次,对每个对象进行初始化

Class Customer{
   Static String Name;  //静态变量Name
   Static{
   Name=“香港银行“;     //给静态变量Name赋值
  }

4、继承

关键字:extends

子类对象继承了父类对象的所有内容,但不都可见
静态资源属于类,不属于被继承的范畴

子类无参构造方法默认来自于父类无参
如果父类有有参,但没有无参,子类就无法直接写出无参构造

注:(1Java 不支持多重继承,一个子类只能有一个父类

       (2)Java中可以有多层继承,如A继承了B,B又继承了C,此时相当于A继承了C

实例化子类对象时调用顺序(先后)

父类静态初始化器---子类静态初始化器---父类的初始化器---父类的构造函数---子类的初始化器---  子类的构造函数  

继承的底层本质:

   (1)  父类构造函数无参数实例化子类对象,先自动实例化父类对象,此时调用的是父类无参      的构造函数。   

   (2)父类构造函数有参数super(参数列表)给父类传参数

注:super(参数列表)必须写在子类构造函数的第一句,传入的参数必须与父类构造函数中的参数列表类型相匹配

例:

package extends3;
   class Dialog{                                 //父类 Dialog
   protected String title;
   public Dialog(String title){                  //父类带参构造函数
   this.title=title;
   }
  }

class FontDialog extends Dialog{                 //子类FontDialog继承父类Dialog
  private String fontName;

public FontDialog(String title,String fontName){ //子类带参构造函数

super (title);                                   //super给父类构造函数传参数  
  this.fontName= fontName;      

}