3.3面向对象进阶

1.java只有单继承,多重继承,没有多继承。(不可能有多个爹,但可以有个爷爷)
2.当子类对象找属性时,先去找父亲,没有这个属性,通过父亲找爷爷。
3.如果父类没有无参构造方法,那么子类只能通过super()来访问父类构造方法,属性,方 法。super(构造方法) super.sex();属性
4.重写:方法的重载,发生在继承类中;注:参数列表,返回类型必须相同;访辈分权限
越低,权限越大。父亲不能重写子类,静态不能被重写。
5.

面试题:1.java中重写发生在(Override),发生在字父类中。
重载发生在(overload)一个类中。
2.参数列表:
重载:必须不同;
重写:必须相同;
3.返回值类型:
重载:与返回值类型无关
重写:返回值类型必须一致;
4.访问权限:
重载:与权限无关
重写:子>父
5.异常处理:
重载:无关;
重写:范围更加精准,不许有新的异常。
6. 抽象类:abstract class 类名 {
Public abstract void add();//必须在这个类中;只用来声明未实现,没有{}
}

注:1.抽象类不能被直接实例化,不能直接用new,但是在子类创建时,会被 jvm实例化;
2.一个抽象类必学被子类继承,被继承的子类如果不是抽象类,则必须 重写抽象类中的全部方法。
3.不能用private修饰
4.如果继承抽象类,那么必须实现所有抽象方法。否者改为抽象
6.接口:只有抽象方法和全局变量
Interface 名称{
全局变量 不用加Public static final
抽象方法 可以不用加Public abstract

}
7.接口的实现:与继承不同能有多个爹,但不用都实现
Class 子类 implements 父接口1 .。。。
8.接口都是抽象的,所以可以多继承
Interface SDSD extends a,b{
}
9.多态(对象的多种形态,父类的用,之类的new)
10.Object:是所有没身份类的爹

例子:

public class BookTest {

	public static void main(String[] args) {
		Book b1 = new Book("童话",210);
		b1.detail();
		Book b2 = new Book("小红帽",10);
		b2.detail();
		Book b3 = new Book("白雪公主",200);
		b3.detail();
	}

}
class Book {

	private String title;
	private int pageNum;
	Book(){}
	Book(String title,int pageNum){
		setTitle(title);
		setPageNum(pageNum);
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public int getPageNum() {
		return pageNum;
	}
	public void setPageNum(int pageNum) {
		if(pageNum < 200) {
			System.out.println("页数不能少于200,已给予默认值200。");
			this.pageNum = 200;
		}else {
			this.pageNum = pageNum;
		}
	}
	void detail() {
		System.out.println("书名:" + title + ",页数:" + pageNum);
	}

}

package com.atkaikeba;

public class JavaStudentTest {

	public static void main(String[] args) {
		JavaStudent.setCompany("开课吧");
		JavaStudent.setSubject("JavaEE");
		JavaStudent s1 = new JavaStudent("张三",20,'男',"打篮球");
		JavaStudent s2 = new JavaStudent("李四",22,'女',"跑步");
		s1.info();
		s2.info();
	}

}
class JavaStudent {
	
	private String name;
	private int age;
	private char sex;
	private String hobby;
	//静态变量属于类的变量
	private static String company;
	private static String subject;
	
	public JavaStudent() {
		super();
		// TODO Auto-generated constructor stub
	}
	public JavaStudent(String name, int age, char sex, String hobby) {
		super();
		this.name = name;
		this.age = age;
		this.sex = sex;
		this.hobby = hobby;
	}
	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 char getSex() {
		return sex;
	}
	public void setSex(char sex) {
		this.sex = sex;
	}
	public String getHobby() {
		return hobby;
	}
	public void setHobby(String hobby) {
		this.hobby = hobby;
	}
	public static String getCompany() {
		return company;
	}
	public static void setCompany(String company) {
		JavaStudent.company = company;
	}
	public static String getSubject() {
		return subject;
	}
	public static void setSubject(String subject) {
		JavaStudent.subject = subject;
	}
	void info() {
		System.out.println("名字:" + name + ",年龄:" + age + ",性别:" + sex + ",爱好:" + hobby + ",公司:" + company + ",学科:" + subject);
	}
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值