public class 类名{
成员变量
成员方法
构造器(无参构造,带参构造)
内部类
代码块
}
具体案例
public calss Person{
String name;
int age;
String sex;
}
1.2如何通过类创建对象
格式
类名 对象名称 = new 类名();
具体代码
Person person = new Person();
1.3封装
1.3.1封装的步骤
使用private关键字修饰
使用public 与getset修饰
封装的具体实现步骤
package com.Text;
public class Person {
String name;
int age;
String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
1.4构造器
1.4.1构造器的作用
构造器可以返回一个类的对象,构造器帮我们把对象的数据初始化好,它包含了无参构造与有构造
构造器的格式
修饰符 类名(形参列表){
//构造代码块。执行代码块
}
构造器的应用
例如定义一个学生类
package com.Text;
public class Student {
String name;
int age;
String sex;
public Student() {//无参构造
}
public Student(String name, int age, String sex) {//有参构造
this.name = name;
this.age = age;
this.sex = sex;
}
}
1.5this关键字
this代表所在类当前对象的引用,即代表当前对象
this出现在实例方法中谁调用这个方法,this就代表谁(get set)
用于构造器中,代表构造器正在初始化这个对象
指没有名字的对象
案例
//有名字的对象
Scanner sc = new Scanner(Systen.in);
//匿名对象
new Scanner(System.in);
2继承
2.1继承的概念
假如我们要定义如下类: 学生类,老师类和工人类,分析如下:
1. 学生类 属性:姓名,年龄 行为:吃饭,睡觉
2. 老师类 属性:姓名,年龄,薪水 行为:吃饭,睡觉,教书
3. 班主任 属性:姓名,年龄,薪水 行为:吃饭,睡觉,管理
假如多个类中存在相同属性和行为时,
我们可以将这些内容抽取到单独一个类中,
那么多个类无需再定义这些属性 和行为,
只要继承那一个类即可。
其中多个类被称为子类
单独被继承的一个类叫父类
继承描述的是事物之间的所属关系,这种关系是: is-a 的关系。
行为关系
1.提高代码的复用性
2.使类与类之间产生关系
2.4类的继承格式
通过extends关键字继承,可以声明一个子类继承一个父类
class 父类{}
class子类 extends 父类{
//代码快
}
案例练习
package com.Text02;
public class Person {
private String name;
private int age;
private String sex;
public Person() {
}
public Person(String name, int age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public void eat() {
System.out.println("吃饭");
}
public void work() {
System.out.println("睡觉");
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
package com.Text02;
public class Student extends Person {
public Student() {
}
public Student(String name, int age, String sex) {
super(name, age, sex);
}
}
package com.Text02;
public class Teacher extends Person {
public Teacher() {
}
public Teacher(String name, int age, String sex) {
super(name, age, sex);
}
}
package com.Text02;
public class Text {
public static void main(String[] args) {
Student s = new Student("刘备",10,"男");
Student s1 = new Student("张飞", 22, "男");
System.out.println(s);
s.eat();
s.work();
System.out.println(s1);
s.work();
s.eat();
Teacher t = new Teacher("弼马温", 33, "男");
System.out.println(t);
t.eat();
t.work();
}
}
继承实际上是子类相同的行为定义到父类当中,子类特有的车行为自己定义
这就体现了相同的属性行为重复利用,从而提高代码的复用性
(不会提高代码的执行效率)
并不是父类的所有东西子类都可以继承
子类不能继承父类的构造器(与类名相同),
可以继承父类的私有成员,但是不能直接访问
1.如果变量名不相同,则无影响
2.如果变量名相同,则有先访问近的,即就近原则
使用this是指访问本类中的
使用super是访问父类中的成员变量
1。成员方法不重名,则不影响
2.成员方法名相同,子类使用时会优先使用子类的(方法重写)
可以检测方法是否正确
1.方法是发生在子类与父类之间的
2.子类的方法覆盖了父类的方法,但保证
3.子类覆盖父类必须保证子类的返回值类型参数列表要与父类保持一致
构造器的名字必须与类名保持一致,所以子类无法继承父类的构造器
构造器 的作用是初始化对象的成员变量的数据,所以子类初始化过程中必需限制性父类的初始化动作
才给子类使用
子类的每个构造方法都有默认的super,调用父类的空参构造,手动调用父类的构造方法会默认覆盖super方法
super和this都是出现在构造方法的第一行,所以不能同时出现
我们把没有方法体的方法称为抽象方法,修饰类是抽象类,Java中规定,包含抽象方法的类就是抽象类
关键字 abstract 用于修饰类和方法,修饰的方法称之为抽象方法,修饰的类称之为抽象类
格式
修饰符 abstract 放回值类型 类名(参数列表);
代码举例
pbulic abstract void a ():
抽象类的子类必须重写抽象类的抽象方法,否则该类必须为抽象类
抽象类的优缺点
优点:抽象类拥有了抽象方法的能力
缺点:抽象类失去了创建对象的能力
1.抽象和类不能创建对象,(抽象方法的方法体没有意义)
2.抽象类中可以有构造器,是供子类初始化对象时初始化时,初始化父类对象使用的
3.抽象类中不一定含有抽象方法,含有抽象方法的一定是抽象类
4.抽象类的子类必须重写抽抽象类的抽象方法,否则该类也必须为抽象类
5.抽象类的意义是被继承时所使用的
抽象类体现的是模板思想
模板定义了通用的架构,使用者只需要关系自己所使用的方法即可;