一、类与对象
1. 类: 将具有相同属性和相同心行为的对象称为类。
2. 对象:是具体存在的实体,有明确的特征和行为
类是对象的抽象,对象是类的实例
3.定义一个简单学生类,以及定义类的方法
访问限定符() class 类名{
//类中的方法
访问限定符 返回值 方法名(参数类型 变量名,……){
方法体……
}
}
public classs Demo{ public void print(){ System.out.println("hello java"); } }
4,类的实例化
我们通过创建类的对象(类的实例化),调用类中的方法。方法为:“类名 变量名 = new 类名();”
方法的调用:变量名.方法名(参数);
例如,
//类的实例化
Demo test = new Demo();
//通过实例化调用方法
test.print();
5.构造方法的重载与方法的重载
5.1构造方法
通过类创建对象,如Student stu = new Student(); Student()是Student的构造方法,每个类默认的是无参的构造方法。
public class Student{ //默认的无参构造函数 Public Student(){ } //构造方法的重载,当实例化"Student stu = new Student("raidyue"):"时调用 //重载的构造方法 Public Student(String name){ This.name=name; } }
注意:1,重载的构造方法必须与类名向同
2,构造方法可由不同的访问限定符修饰
3,构造方法没有返回值类型
5.2方法的重载
在一个类中,当方法的参数类型和个数不同时允许方法名相同
构造方法没有返回值,切其名字必须与类名相同,只在实例化对象是自动调用
6.值传递和引用传递
值传递:方法调用时,实际参数把值传递给形式参数,方法执行中形式参数的值不改变实际参数的值
例如,
public class Test1{
public static void main(String[] args){ int n=10; System.out.println("调用change以前的n是"+n); change(n); System.out.print("调用change以后的n是"+n); public static void change(int n){ n=10; } } }结果:调用change以前的n是3
调用change以后的n是3
引用传递:引用传递实际上传递的是地址。方法调用时,实际参数的地址被传递给对应的形式参数,方法执行的过程中,对形式参数的操作实际是就是对实际参数的操作,即此时的形式参数改变,实际参数也会相应的改变。
例如,
public class Student {
private String name; public static void main(String[] args){ Student st1 = new Student(); st1.setName("第一个"); Student st2 = new Student(); st2.setName("第二个"); Student st3 = new Student(); st3.setName("第三个"); //交换 st1=st2; st2=st3; st3=st1; String name = st3.getName(); System.out .println("st3's name is "+name); } public void setName(String n){ name = n; } public String getName(){ return name; } }结果是:st3's name is 第二个
类的继承
1.继承
某种情况下,为了提高效率,我们使用继承,子类继承父类的所有方法和属性,子类可以定义心得属性和方法,也可以使用父类的方法。
特点:
Java中不支持多重继承,一个子类只能有一个父类。
继承是传递的,若A继承了B,B继承了C,则A会继承B和C的所有属性和方法,A也可以定义自己的属性和方法。
关键字是 extend
public class A{
……
}
public class B extend A{
……
}
方法的重写
保持父类中方法的定义不变,在子类中修改其方法体,
自动转型
一个子类的对象可以自动的转型为父类对象,比如定义一个类“public class Student”,再定义一个大学生类继承它,“public class UNStudent extends Student”,实例化,“Student uns = new UNStudent();”此时子类对象自动转为父类对象。
接口
定义:public interface 接口名,接口中的中的函数不能有函数体,只能有函数的定义
实现:public class 类名 implements(实现接口的关键字) 接口名{
……
}
接口的继承:接口与接口之间可以通过extends关键字实现继承,与类的继承不同的是,一个接可以继承多个接口
抽象类
抽象类是不能被实例化的类,可以不包括抽象方法(没有方法体的方法),其定义方法是
public abstract class 类名{
}
当子类的父类值抽象类时,无论父类中有多少方法,子类都必须实现