菜鸡自学JAVA坎坷路day.6(import的使用,extends,override)

1.包机制(package):



域名倒着写。




实例说明如下:

/**
 * import的使用方法
 * author :Wang
 * 
 * 
 */
package cn.wang;//包必须是非注释语句的第一句

import project02.user;//先是包名后是类名"包名.*"是全部导入,导入的这个包必须是public类型的才行    同一个包内可以直接使用里面的类
import java.util.Date;
import java.sql.*;//他和上面那一行都有Date这个类
import static java.lang.Math.*;//导入Math的所有静态属性;

public class testImport {
	public static void main(String[] args) {
		user u2 = new user();
		
		project02.testClass u3 = new project02.testClass();//要是没有导入的话就要指明这个类的地址
		
		Date d = new Date();//这时候会默认调用指向明了的java.util.Date
		
		java.util.Date d2 = new java.util.Date();//这样就可以清楚的说明调用的是哪一个类
		
		System.out.println(PI);//因为导入了静态的他      所以不用加前缀了
	}

}

2.面向对象的三大特征:


这章的学习方法:温新而知故

(1).继承(extends)


注意:Java的接口可以多继承,但是他的类只能单继承;

每个类都默认为是Object的子类;(类一般首字母大写),可以在选中类以后用crtl加T可以看一个类的关系(继承结构);


A  instanceof B 判断A是不是B的实例对象;

package cn.wang;
/**
 * 
 * 测试extends
 * @author HP
 *
 */

public class Person {
	String name;
	int age;
	
	public void rest() {
		System.out.println("我想要休息一会。");
	}
	public static void main(String[] args) {
		Student stu = new Student();
		stu.name = "wangtong";
		stu.rest();
		System.out.println(stu.name);
		System.out.println(stu instanceof Person);
		System.out.println(stu instanceof Student);//instanceof   判断这个对象就是不是Student类的实例化;
	}

}

class Student extends Person{
	int height;
	
	public void study() {
		System.out.println("学习两个小时");
	}
}

3.重写(override)


package cn.wang;
/**
 * 测试重写
 * @author Wang
 *
 */

public class TsetOverride {
	public static void main(String[] args) {
		House a = new House();
		a.stop();//调用父类的stop()
		a.run();//调用自己重写的run()
		
	}
}

class Vehical{
	public void run() {
		System.out.println("滴滴滴   的跑");
	}
	
	public void stop() {
		System.out.println("刹车");
	}
	
	public Person passenger() {//直接调用一个包下面的Person类
		return new Person();
	}
}

class House extends Vehical{
	public void run() {//重写父类的run
		System.out.println("策马奔腾");
	}
	
	public Student passenger() {//这里重写的返回值可以是Person的子类Student而不能是Person的父类Object;
		return new Student();
	}
}

4.Object类的toString

package cn.wang;
/**
 * 测试Object
 * @author Wang
 *
 */

public class TestObject {
	public static void main(String[] args) {
		Object  obj = new Object();
		System.out.println(obj.toString());
		/* 这个是tostring()的源码,作用就是打印他的地址结果为java.lang.Object@161cd475,源码也可以被重写
		 * public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }*/
	} 
}

5.equals

package cn.wang;
/**
 * equals的测试与重写
 * @author Wang
 *
 */

public class TestEquals {
	public static void main(String[] args) {
		
		User u1 = new User(1,"wang");
		User u2 = new User(1,"wang");
		
		System.out.println(u1.equals(u2));
		System.out.println(u1 == u2);//==相等的条件是看他们的地址是否相等  
		/*
	 public boolean equals(Object obj) {//这是equals的源码  默认的是与==一样的判断地址	
        return (this == obj);
    }
		 */
		
	}	
	

}

class User{
	int id;
	String name;
	
	public User(int id ,String name) {
		this.name = name;
		this.id = id;
	}


public boolean equals(Object obj) {//但在我们的实际开发中,通常会认为两个对象的内容相等时,则两个对象相等,equals返回true。对象内容不同,则返回false  所以对他进行重写
		
		if(this == obj) //如果地值相等肯定就是相等的
			return true;
		
		User other = (User)obj;//将传过来的对象强制转化成User类型的对象  因为  你的重写是为User重写的传进来的对象肯定是User类型的
		
		if(id == other.id) {
			return true;
		}
		return false;//注意这个要返回的代表整个函数的返回要是没有就报错;
		
	}
}

注意: 请仔细阅读注解;

6.继承树的追溯:super()





/**
 * 测试super和继承树的追溯;
 * @author Wang
 *
 */

public class TestSuper {
	public static void main(String[] args) {
		Child C = new Child();//构造Child类的时候就是先构造他的根类Object然后构造Father最后构造自己    和static的初始化块(对类进行初始化)一样
		C.run();
	}
}

class Father {
	Father(){
		System.out.println("FatherClass Construct.");
	}
	
	public void run() {
		System.out.println("Father Run");
	}
	
}

class Child extends Father{
	
	Child(){
		super();//构造方法的第一句总是他   不管你写不写
		System.out.println("ChildClass Contruct.");
	}
	
	public void run() {
		super.run();//调用父类中被子类override的run();
		System.out.println("Child Run");
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的Java实现: ``` import java.util.*; public class WolfSheepCabbage { public static void main(String[] args) { // 初始状态:false表示在左岸,true表示在右岸 boolean wolf = false; // 狼 boolean sheep = false; // 羊 boolean cabbage = false; // 菜 boolean boat = false; // 船 Scanner scanner = new Scanner(System.in); while (true) { // 输出当前状态 System.out.println("左岸:狼 " + (wolf ? "✅" : "❎") + " 羊 " + (sheep ? "✅" : "❎") + " 菜 " + (cabbage ? "✅" : "❎")); System.out.println("右岸:狼 " + (!wolf ? "✅" : "❎") + " 羊 " + (!sheep ? "✅" : "❎") + " 菜 " + (!cabbage ? "✅" : "❎")); // 判断是否完成任务 if (!wolf && !sheep && !cabbage) { System.out.println("恭喜你完成任务!"); break; } // 输出提示信息 System.out.println("请选择要运输的物品(1:狼,2:羊,3:菜),或者选择运输船(4:船):"); // 获取用户输入 int choice = scanner.nextInt(); // 判断用户选择 switch (choice) { case 1: // 运输狼 if (sheep == cabbage && sheep != wolf) { System.out.println("狼会吃掉羊或菜,操作无效!"); } else { wolf = !wolf; boat = !boat; } break; case 2: // 运输羊 if (cabbage == wolf && cabbage != sheep) { System.out.println("羊会吃掉菜,操作无效!"); } else { sheep = !sheep; boat = !boat; } break; case 3: // 运输菜 if (sheep == wolf && sheep != cabbage) { System.out.println("狼会吃掉羊或菜,操作无效!"); } else { cabbage = !cabbage; boat = !boat; } break; case 4: // 运输船 if (wolf == sheep && wolf != cabbage) { System.out.println("狼会吃掉羊或菜,操作无效!"); } else if (boat && (!wolf || !sheep || !cabbage)) { System.out.println("船上必须有人!"); } else { boat = !boat; } break; default: System.out.println("输入无效!"); break; } } } } ``` 在程序运行过程中,会输出当前状态,然后提示用户选择要运输的物品或船。根据用户的选择,更新当前状态,直到完成任务。需要注意的是,在运输船的时候,必须有人在船上,否则操作无效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值