栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

动力结点Java基础学习笔记(二)Java类中的构造方法、封装、继承、多态与关键字

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

动力结点Java基础学习笔记(二)Java类中的构造方法、封装、继承、多态与关键字

快捷键

package com.bjpowernode.javase;
//package机制是java语法的一部分

public class HelloWorld {

	public static void main(String[] args) {
//		 TODO Auto-generated method stub
//		 快捷键
//		 ctrl + D 删除一行
//		 alt + / 自动补全
//		 ctrl + s 保存
//		 ctrl + 1 鼠标停留在红色下划线,2211自动纠错
//		 ctrl + shift + f 自动纠正格式
//		 ctrl + / 注释与取消注释
//		 ctrl + shift + / 多行代码的注释与取消注释
		
		System.out.println("Hello World !");
		
		
	}
}

构造函数

package com.bjpowernode.javase;


public class Constructor {

	private int num;
	
	static String country = "中国";//静态变量,类加载时直接分配内存,不用创建对象,该变量与.class关联,存储于方法区内存中
	
	public void printNum() {
		System.out.println(num + "出现了!!!");//this大多数情况下都可以省略不写
		System.out.println(this.num + "又出现了!!!");
	}

	public Constructor() {
		//默认构造函数
		System.out.println("我是默认构造函数");
	}
	
	public Constructor(int i) {
		//带参构造函数
		System.out.println("我是带参构造函数");
		num = i;
	}
	
	{
		System.out.println("我是实例代码块,我在构造函数执行前执行1");
	}
	
	{
		System.out.println("我是实例代码块,我在构造函数执行前执行2");
	}
	
	{
		System.out.println("我是实例代码块,我在构造函数执行前执行3");
	}
	
	public void setNum(int a) {
		num = a;
	}
	
	public int getNum() {
		return num;
	}
	
	public static void main(String[] args) {
		
		ConstructorTest.main();
		ConstructorTest.main("哈哈哈哈");
	}
	

}
package com.bjpowernode.javase;



public class ConstructorTest {
	
	public static void main(String[] args) {
		
		System.out.println("我是main函数,我在静态代码块后面执行");
		
		Constructor u = new Constructor();
		System.out.println(u.getNum());
		
		u.setNum(50);
		System.out.println(u.getNum());
		
		Constructor v = new Constructor(100);
		System.out.println(v.getNum());
		
		u.printNum();
		v.printNum();
		
		System.out.println(Constructor.country);//静态参数,用类型.参数访问
	}
	
	static {
		System.out.println("我是静态代码块,我执行后main函数才执行");
	}
	
	//main函数也可以重载,使用 类名.main(参数)调用
	public static void main() {
		System.out.println("我是main函数的无参重载");
	}
	
	public static void main(String x) {
		
		System.out.println(x + "我是main函数有参重载");
		
	}

}

封装

package com.bjpowernode.javase;



public class Student {
	//学号
	int no;
	//姓名
	String name;
	//年龄
	
	
	private int age;	//将age设置成私有,提高安全性
	//住址
	String addr;
	//性别
	String sex;
	
	public static void testFun() {
		System.out.println("我是有static关键字修饰的方法");
	}
	
	
	
	public void setAge(int a) {
		
		//编写业务逻辑代码进行安全控制
		if(a < 0 || a > 150){
			System.out.println("输入的年龄不合法");
			return ;
		}
		
		//年龄合法
		age = a;

	}
	
	public int getAge() {
		return age;
	}
	
	

}

package com.bjpowernode.javase;



public class StudentTest {
	// main方法自动补全
	// 输入main,然后alt + /,回车
	public static void main(String[] args) {
		Student s = new Student(); // 后面的Student要加上();
		System.out.println(s.no);
		System.out.println(s.name);
		
		System.out.println(s.addr);
		System.out.println(s.sex);
		
		//以下 测试有无static关键字的方法调用区别
		s.setAge(22);//设置年龄 无static关键字修饰
		System.out.println(s.getAge());
		Student.testFun();//测试有static关键字修饰的函数
	}
}

继承

package com.bjpowernode.javase;



public class Account {
	
	private String actno;	//账户
	
	private double balance;	//余额
	
	
	
	public String getActno() {
		return actno;
	}

	public void setActno(String actno) {
		this.actno = actno;
	}

	public double getBalance() {
		return balance;
	}

	public void setBalance(double balance) {
		this.balance = balance;
	}

	public Account(String actno, double balance) {
		super();
		this.actno = actno;
		this.balance = balance;
	}

	public Account() {
		super();
	}



	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}
package com.bjpowernode.javase;



public class CreditAccount extends Account{
	
	private double credit;
	
	

	public double getCredit() {
		return credit;
	}



	public void setCredit(double credit) {
		this.credit = credit;
	}



	public CreditAccount(String actno, double balance, double credit) {
		super(actno, balance);
		this.credit = credit;
	}


	public CreditAccount() {
		super();
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}
package com.bjpowernode.javase;



public class ExtendsTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ExtendsTest et = new ExtendsTest();
		String s = et.toString();
		System.out.println(s);
		
		CreditAccount act = new CreditAccount();
		act.setActno("act-001");
		act.setBalance(-10000.0);
		act.setCredit(0.99);
		
		System.out.println(act.getActno() + "," + act.getBalance() + "," + act.getCredit());
	}

}

方法覆盖override

package com.bjpowernode.javase;



public class Animal {
	//动物都可以移动
	public void move() {
		System.out.println("动物在移动");
	}
}

package com.bjpowernode.javase;



public class Bird extends Animal{
	//对父类中的move()进行重写
	public void move() {
		System.out.println("鸟儿在飞翔");
	}
	
	public void fly() {
		System.out.println("鸟儿用翅膀飞翔");
	}

}
package com.bjpowernode.javase;



public class Cat extends Animal{
	//对父类中的move()进行重写,这就叫override
	public void move() {
		System.out.println("猫在走猫步");
	}
	
	//子类特有的行为
	public void catchMouse() {
		System.out.println("猫抓老鼠");
	}
	
}

package com.bjpowernode.javase;



public class Hen extends Bird {

	//生成子类的而覆盖方法: 右键-> Source -> Override/Implement Methods -> 勾选 -> OK	
	@Override
	public void move() {
		// TODO Auto-generated method stub
		System.out.println("母鸡飞不起来");
	}
	

}

多态

package com.bjpowernode.javase;



public class PmpTest {
	
	public static void main(String[] args) {
		//使用多态语法机制
		//Cat is Animal.合法
		Animal a2 = new Cat();	//子类型转换为父类型,向上转型upcasting,自动类型转换
		a2.move();		//调用的是Cat的move()方法
		//a2.catchMouse();//但是这样会报错
		//编译阶段编译器检查到a2的类型是Animal,从Animal.class字节码文件中查找catchMouse()方法,最终没有找到该方法,导致静态绑定失败,也就是编译失败。
		
		Cat c2 = (Cat)a2;//父类型转化为子类型
		c2.catchMouse();
		
		Animal a3 = new Bird();
		
		if(a3 instanceof Cat) {
			Cat c3 = (Cat)a3;
			c3.catchMouse();
		}else if(a3 instanceof Bird){
			Bird b2 = (Bird)a3;
			b2.fly();
		}
		//Cat c3 = (Cat)a3;		
		//编译没有任何问题,但是在运行阶段会出现异常,因为JVM堆内存当中真实存在的对象是Bird,Bird对象无法转化为Cat对象,两种类型之间不存在任何继承关系
		//出现了著名的异常java.lang.ClassCastException异常,这种异常总是在 向下转型 时候发生(强制类型转换)
		
		//使用instanceof运算符可以避免出现以上的异常
		
	}

}

final关键字

package com.bjpowernode.javase;



public class FinalTest {

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/750832.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号