九 Java方法
1:什么是方法:方法是类的行为,也可以说成功能。2:方法内部封装了一段逻辑代码。
3:方法在定义时,尽可能的独立。
4: 方法可以重复调用,使代码简洁,不冗余。
5:同时方便维护,修改。
方法怎么定义:
格式:
修饰词 返回值类型 方法名(形式参数){
方法体--方法逻辑
}
定义位置:在类体里,方法之间并列存在。
修饰词:public protected default private
返回值类型:
1:void :无返回值类型,空返回值类型。
2:数据类型(包含基本数据类型,引用类型)
方法的逻辑结束后,
必须有return关键字,
return 后面必须跟着返回值类型的一个数据,
return:表示方法结束。
方法名:与变量名的命名规则一样
形式参数:一种形式,表示站位,必须强调类型
带上参数,会让方法更加的灵活
方法的调用,在别处使用:
两种方法:
void类型的方法:
方法名(有参传参);
有返回值数据类型的方法
返回值类型 变量 =方法名(有参传参);
定义方法:其实就是规定好功能的逻辑模板使用的时候,就会按照模板的逻辑运行。
十 抽象数据类型+对象创建
抽象数据类型就是用一堆不同的类型数据来描述一种新的事务,这种事务就是一种抽象数据类型。简单点来说就是创建一个拥有共同特征,行为相似的事务,创建一个类型。
举个例子:学生的类型,他拥有学号ID,姓名name,性别gender,年龄age等等属性,还有上课,放学回家等行为,我们就可以创建一个简单的学生类型:
public class Student{
int id;
String name;
char gender;
int age;
//下面两个是学生类的构造方法,是创建初始化这个类型时用的,也就是实例化对象。会默认有一个无参构造器,但为了规范代码我们要写一个无参和一个有参构造器。
public Student(){}
public Student(int iD, String name, char gender, int age) {
super();
ID = iD;
this.name = name;
this.gender = gender;
this.age = age;
}
public void A{
system.out.println("去上课");
}
public void B{
system.out.println("放学回家");
}
}
这样一个简单的学生类型就做好了。
对象,什么是对象,对象就是类型中的具体个体,实例。
就是一个类型创建好了以后,我们创建一个这个类型的实例,他就是对象。
现实中:先有对象,再有类型
计算机:先定义类型,再创建对象
类型是对象的模板,对象是类的具体实例。
怎么创建对象? 类型名 h1 = new 类型名();
比如上面的学生类型,我们可以创建一个叫做小明的学生
Student XiaoMing = new Student();
小明拥有Student类型中的所有属性,也有去上课和放学回家的行为方法可以调用。
引用类型的变量 存的对象的地址信息
引用类型的变量叫“引用变量”,简称"引用"
属性的访问(存取)
使用引用.属性
方法的调用
引用.方法名()
this关键字
在定义方法时,方法里可以直接使用成员变量,而成员变量前默认有一个this.在定义类期间,this没有意义,当实例化对象后,this指的是实例化的对象当临时变量(局部变量)与成员变量重名时,this.不可以省略。作为区分。
十一 方法的重载与重写
Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。
在同一个类中,方法名相同,参数类型列表不同,与修饰词,返回值类型无关。
类型列表是指形参的类型从左到右的顺序--简称参数列表
public void add(int a,int b){}// int,int
public void add(int a,double b){}// int,double
protected int add(int a,int b){}//int,int
public double add(double a,double b){}//double,double
在调用期间,编译器会根据传入的参数个数,类型,进行匹配方法区里的相应方法,如果找到了,就执行里面的逻辑,没找到,就报编译错误,编译不了.class文件。
Java方法重写,
1:父子类关系,方法名不变,参数类型列表不变
2:返回值类型:子类重写父类方法时,返回值类型不变,或者是父类方法中的返回值类型的子类型。
3:修饰词:重写,子类方法的修饰词可以比父类方法的修饰词的范围更大,或者一样。
构造器:不能被继承,子类的构造器建立在父类的构造器的基础上子类的构造器中会默认调用父类的无参构造器
super();
当父类中没有无参构造器时,必须在子类中手动调用父类中的某一个构造器super(有参传参),必须写在构造器中的第一句话上。
父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写。
在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。
重写的主要优点是能够定义某个子类特有的特征:这也叫做多态性,重写方法只能存在于具有继承关系中,重写方法只能重写父类非私有的方法。
十二 Java的封装,继承的多态
Java是一门面对对象的语言,相比面向过程语言它简单方便了许多。它拥有三大特性:封装,继承和多态。封装
封装就是将类的信息隐藏在类内部,不允许外部程序直接访问,而是通过该类的方法实现对隐藏信息的操作和访问。也避免了代码的重复,比如一段需要多次使用的逻辑代码,每次使用的时候就需要写一次,很麻烦,我们可以把这一段逻辑代码封装成一个方法,需要使用的时候直接方法名调用,极大减少了代码的重复。
继承
为了开发的方便,避免代码的重复冗余,重复使用一段代码,关键字extends,java里只支持单继承,一个子类只有一个父类,一个父类可以有多个子类。继承是类与类的一种关系,比较像集合中的从属于关系。比如说,狗属于动物。就可以看成狗类继承了动物类,那么狗类就是动物类的子类(派生类),动物类就是狗类的父类(基类)。
多态
多态指的是对象的多种形态。多态有两种:引用多态和方法多态。继承是多态的实现基础。
1.引用多态
父类的引用可以指向本类的对象;父类的引用可以指向子类的对象。
2. 方法多态
创建父类对象时,调用的方法为父类方法;
创建子类对象时,调用的方法是子类重写的方法或继承自父类的方法;
概念:相同的事物,调用其相同的方法,参数也相同时,但表现的行为却不同。
理解:子类以父类的身份出现,但做事情时还是以自己的方法实现(比如动物类是狗类的父类,有一只狗叫小花,小花是狗类,也是动物类)。子类以父类的身份出现需要向上转型,其中向上转型是由JVM自动实现的,是安全的,但向下转型是不安全的,需要强制转换。子类以父类的身份出现时自己特有的属性和方法将不能使用。