类的构造方法
构造方法不是方法
构造方法的作用:用来创建类的对象
如果要创建一个对象
类名 变量名 = new 类名();
类名()实际上就是在调用类的构造方法来创建对象
构造方法的要求
在一个类中,构造方法的名字必须与类名相同,构造方法不能有返回值
语法:
public class 类名{
//构造方法
修饰符 类名(参数列表){
//方法体
}
}
注意:
- 如果一个类中,没有声明构造方法,那么编译器,在编译Java代码时,会自动添加一个无参的构造方法,成为默认构造方法,默认的构造方法是空的方法体。
- 构造参数是可以有参数的
package com.situ.demo;
public class Student {
String name;
String no;
String sex;
int age;
//创建一个带有name参数的构造方法
public Student(String name) {
//如果在方法中,出现了与类属性相同的变量,就按照就近原则
//name = name;
this.name = name;
}
}
package com.situ.demo;
public class Demo01 {
public static void main(String[] args) {
//new 后面的就是调用构造方法
Student student = new Student("Tom");
}
}
构造方法可以重载
重载:在一个类中存在多个构造方法,这些构造方法必须用用有不同参数列表
public class Student {
String name;
String no;
String sex;
int age;
//创建一个带有name参数的构造方法
public Student(String name) {
//如果在方法中,出现了与类属性相同的变量,就按照就近原则
//name = name;
this.name = name;
}
public Student(String name,String no,String sex,int age) {
this.name = name;
this.no = no;
this.sex = sex;
this.age = age;
}
public Student() {
}
}
方法带有返回值,他不是构造方法,只是类的一个普通方法
public void Student(){
//不会和无参的构造方法冲突,因为存在返回值,所以只是一个普通的方法
}
面向对象的三大特性
封装
广义的封装:编写一个类/接口的过程就是封装的过程
狭义的封装:为了让类更加安全,需要对类进行一定的限制,
- 将类的属性私有化,使用private去修饰,被private关键字修饰的东西,不管是方法还是属性或是构造方法都不能够在类的外部使用,添加公共的get/set方法
package com.situ.demo;
public class Student {
private String name;
private String no;
private String sex;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//创建一个带有name参数的构造方法
public Student(String name) {
//如果在方法中,出现了与类属性相同的变量,就按照就近原则
//name = name;
this.name = name;
}
public Student(String name,String no,String sex,int age) {
this.name = name;
this.no = no;
this.sex = sex;
this.age = age;
}
public Student() {
}
}
继承
继承是指类与类之间的关系
当一个类继承另外一个类时,这个类别成为子类,别继承的成为父类,父类也可以叫超类,子类也可以叫派生类
在Java中子类和父类之间使用extendes关键词实现继承
-
当子类继承父类时,子类会继承父类所有的属性和方法
-
子类还可以拓展属于自己的属性和方法
-
子类还可以重写父类中已经定义好的方法,也可以叫覆盖父类的方法
package com.situ.demo;
public class Child extends Parent{
private String no;
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
//重写
@Override
public void init() {
System.out.println("天天向上");
}
}
package com.situ.demo;
public class Parent {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void init() {
System.out.println("好好学习");
}
}
重写:指在继承关系下,子类中出现了和父类方法名以及参数列表一样的,我们就称子类重写了父类的方法
这时子类的重写的方法,会覆盖掉从父类继承来的方法,因此,在子类对象上调用方法时,执行的是子类的方法
多态
多态:顾名思义:多种状态;接口的多种不同的实现方式即为多态,允许将子类类型的指针赋值给父类类型的指针。
个人通俗的的来讲就是父类可以被多个子类继承,然后父类中的同一个方法,被多个子类同时重写,而表现出的不同的状态,就是多态
public interface Parent//父类接口
{
public void simpleCall();
}
public class Child_A implements Parent
{
public void simpleCall();
{
//具体的实现细节;
}
}
public class Child_B implements Parent
{
public void simpleCall();
{
//具体的实现细节;
}
}