Package 的使用
java.lang(language) Java语言程序设计的基础类
java.awt(abstract window toolkit) 用于创建用户界面和绘制图形图像的相关类
java.util(utility) 包含集合、日期、国际化和各种使用的工具类
java.io(input/output) 可提供数据输入/输出相关功能的类
java.net(网络) 提供用于实现Java网络编程的相关功能的类
java.sql(structed query language) 提供数据库操作相关功能类
继承(Inheritance)
Eg:
import java.util.Date;
public class Person {
private Stringname;
private int age;
private Stringbirthday;
public StringgetName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public StringgetBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public StringgetInfo(){
return "name:"+name+"\t"+"age:"+age+"\t"+"birthday:"+birthday;
}
}
public class Student extends Person{
private String school;
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
}
public class TestExtends {
public static void main(String[] args) {
Student s = new Student();
s.setAge(21);
s.setBirthday("1990,05,01");
s.setSchool("top");
System.out.println(s.getInfo());
}
}
结果:
name:xiaoqing age:21 birthday:1990,05,01
访问控制:
指对Java类或类成员中的操作进行限制。即规定其在多大的范围内可以被直接访问
方法重写
Override
在子类中可以根据需要对父类中继承的方法进行重新定义
规则:
重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型;
重写方法不能使用比重写方法更严格的访问权限;
重写方法不允许声明抛出比被重写方法范围更大的异常类型。
Eg:
public class Person {
protected String name;
private int age;
private String birthday;
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 getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getInfo(){
return "name:"+name+"\t"+"age:"+age+"\t"+"birthday:"+birthday;
}
}
public class Student extends Person{
private String school;
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public String getInfo(){//方法的重写
重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型;
重写方法不能使用比重写方法更严格的访问权限;
重写方法不允许声明抛出比被重写方法范围更大的异常类型。
return "school:"+school;
}
}
public class TestOverride {
public static void main(String[] args) {
Student s = new Student();
s.setName("xiaoqing");
s.setAge(21);
s.setBirthday("1990,05,01");
s.setSchool("top");
System.out.println(s.getInfo());
}
}
结果:
school:top
关键字super
在存在命名冲突(子类中存在方法重写或添加同名属性)的情况下,子类中的代码将自动使用子类中的同名属性或重写后的方法。也可以在子类中使用关键字super引用父类中的成分
Eg:
调用父类中属性的值:
public class TestSuper1 {
public static void main(String[] args) {
Dog d = new Dog();
d.getInfo();
System.out.println(d.getInfo());
d.test();
}
}
class Animail{
protected int i = 2;
}
class Dog extends Animail{
protected int i = 3;
private String name = "xiao'bai";
private int age = 10;
public String getInfo(){
return "Name:"+name+"\t"+"Age:"+age;
}
public void test(){
System.out.println(super.i);//调用父类中属性的值
System.out.println(i);//调用子类中属性的值
}
}
结果:
Name:xiao'bai Age:10
2
3
Eg:
调用父类中方法的值:
public class TestSuper2 {
public static void main(String[] args) {
Man m = new Man();
m.getInfo();
System.out.println(m.getInfo());
m.test();
Woman w = new Woman();
w.getInfo();
System.out.println(w.getInfo());
w.test();
}
}
class People{
protected int i = 2;
}
class Man extends People{
protected int i = 3;
private String name = "Tom";
private int age = 20;
public String getInfo(){
return "Name:"+name+"\t"+"Age:"+age;
}
public void test(){
System.out.println(super.i);//调用父类中属性的值
System.out.println(i);//调用子类中属性的值
}
}
class Woman extends Man{
protected String sex = "女";
protected int hight = 175;
public StringgetInfo(){//重写了getInfo()方法
return super.getInfo()+"\thight:"+hight+"\t"+"sex:"+sex;
}
public void test(){
System.out.println(super.i);//调用父类中属性的值
System.out.println(i);//调用子类中属性的值
}
}
结果:
Name:Tom Age:20
2
3
Name:Tom Age:20 hight:175 sex:女
3
3
方法重载
在一个类中存在多个同名方法的情况称为方法重载(Overload),重载方法的参数列表必须不同
规则:
方法名一样
参数列表一定不一样
Eg:
public class Test {
public static void main(String[] args) {
Tool t = new Tool();
t.display(21);
t.display(5201314);
t.display("我爱你,我的乖乖");
}
}
class Tool{
public void display(int a){
System.out.println("输出整数:"+a);
}
public void display(double b){
System.out.println("输出浮点型:"+b);
}
public void display(String c){
System.out.println("输出文本:"+c);
}
}
结果:
输出整数:21
输出整数:5201314
输出文本:我爱你,我的乖乖
构造方法重载
关键字static
静态导入
关键字final
Final标记的类不能被继承
标记的方法不能被子类重写
标记的变量(成员变量或局部变量)即成为常量,只能赋值依次
标记的成员变量必须在声明的同时或在每个构造方法中显示赋值,然后才能使用
不允许用于修饰构造方法、抽象类以及抽象方法
多态性
多态:Java中,子类的对象可以替代父类的对象使用
对象造型(Casting)
引用类型数据值之间的强制类型转换称为造型