下面是9月13日课程心得总结:
1.构造器/构造函数
定义:任何一个类都会有一个默认的构造函数,用于构造一个实例.
格式:修饰符 函数名(形式参数){ 函数体 }
注意:1)构造函数并不是由我们手动调用的,而是在创建对应的对象时,java虚拟机(jvm)会主动调用到对应的构造函数.
2)堆空间中的对象如果没有变量引用,则由Java虚拟机的垃圾清理机制帮我们做清理工作.
3)构造函数并不是由我们手动调用的,而是在创建对应的对象时,java虚拟机(jvm)会主动调用到对应的构造函数. 作用:1)创建对象 2)初始化对象的属性2.方法重载
定义:在同一个类中,多个方法的方法名相同,参数列表(参数个数、顺序、类型)不同的方法互为重载方法.
作用:同一个函数名可以出现不同的函数以应对不同个数或者不同数据类型的参数.
注意:如果构造方法被重载了,默认无参的构造方法则不存在了.
特例:
package org.lxh.demo;
public class lvjiakai {
public static void main(String args[]) {
add(1,2);
}
public static void add(int a,int b){
System.out.println("总和:"+(a+b));
}
public static int add(int a,int b){
System.out.println("总和:"+(a+b)); return 12;
}
}
这个小程序是会报错的,因为重载与返回值类型无关!!
3.继承
定义:子类继承父类的相关属性和方法.
关键字:extends
语法:public class 子类名 extends 父类名{}
注意:1)构造方法不会被继承.
2)单继承.
3)创建子类对象时默认会先调用父类无参的构造函数.
4.方法重写
定义:子类重写父类的方法,方法名、参数列表、返回类型必须都要一致.
作用:父类的功能无法满足子类的需求时就使用.
前提:必须存在继承关系.
例如:
package cn.itcast.observer;
class Fu{
String name;
public Fu(String name){
this.name = name;
}
public void eat(){
System.out.println(name+"吃番薯");
}
}
class Zi extends Fu{
String num;
public Zi(String name){
super(name);
}
public void eat(){
System.out.println(name+"吃龙虾");
}
}
public class Demo1{
public static void main(String[]args){
Zi z = newZi("狗娃");
z.eat();
}
}
此小程序输出的结果是:狗娃吃龙虾
5.自动转型和多态
自动转型:子类的对象自动转型为父类的类型. 父类类名 变量名 = new 子类类名();
多态:一个对象具备多种形态.
多态的前提:必须存在继承或者实现关系.
注意:1)转型后的对象,如果子类重写了父类的非静态方法,则执行的是重写后的,如果没有重写,则执行的是父类的.
2)多态情况下子父类存在同名的成员变量(无论是静态还是非静态)时,访问的是父类成员变量.
3)多态情况下,不能访问子类特有的成员.
综合应用例子:
package org.cn.lxh;
class Fu{
int age = 30;
public static void run(){
System.out.println("跑");
}
public void eat(){
System.out.println("喝");
}
}
class Zi extends Fu{
int age = 10;
public static void run(){
System.out.println("走");
}
public void eat(){
System.out.println("吃");
}
}
public class Demo0913{
public static void main(String[] args){
Fu zi = new Zi();
System.out.println(zi.age); zi.run(); zi.eat();
}
}
此小程序的输出结果是:
30
跑
吃
6.方法分类(普通方法、构造方法、抽象方法)
格式:
普通方法:public 返回类型 方法名(参数列表){}
构造方法:public 类名(参数列表){}
抽象方法:public abstract 返回类型 方法名(参数列表);
7.类的分类(普通类、抽象类、接口)
区别:
普通类:public class 类名{}
1).只能定义普通方法和构造方法,一定不能有抽象方法.
2).属性可以是常量,也可以是变量.
3).可以创建对象.
抽象类:public abstract class 类名{}
1).三种类型的方法都可以存在.
2).属性可以是常量,也可以是变量.
3).不能创建对象.
接口:public interface 类名{}
1).一定只能有抽象方法.
2).一定只能是常量.
3).不能创建对象.
注意:在接口中,常量修饰词(static final)和抽象方法修饰词(abstract)可以省略,但是在抽象类中不能省略.
8.接口/抽象类继承
格式:
抽象类继承:public class 子类类名 extends 抽象父类{}
接口继承:public class 子类类名 implements 父类接口名{}
注意:
1).抽象类和接口,当做父类使用,用于指导子类方法的定义.
2).抽象类是单继承,接口是多继承的.
3).接口中的方法都是抽象的方法,默认的修饰符为public abstract.(abstract修饰符少了没关系,java编译器会自动加上).
4).接口不能创建对象.
5).接口是没有构造方法的.
例如:
package org.lxh.demo;
interface A{
int i =10;
public voidprint();
}
public class lvjiakai implements A{
public staticvoid main(String[] args){
lvjiakai l = new lvjiakai();
l.print();
}
//实现接口中的方法
public voidprint(){
System.out.println("接口中的print方法");
}
}
此程序的输出结果:接口中的print方法
java三大特性:封装型、继承性、多态性.
ps:有很多问题大家随时指教,我随时恭候,我会一直努力学习的!!