Java object-oriented package important point

inherit

Inheritance chain

Implying the parent of all classes of Object

Single inheritance

There may be a plurality of sub parent class, a subclass can have only one parent

super

    表示存在继承的子类中,显式查找父类的信息。与之前this很像
    this:代表调用者自己;super:代表调用者的父亲对象,只能使用不能破坏也看不到地址
    super.属性:当子类与父类的属性同名,访问父类的属性
    super.方法():当子类与父类的方法签名相同|重写,访问父类的方法
    super():在子类的构造器首行,显式调用父类的构造器;任何的构造器默认是调用父类的空构造器
    解决构造问题
        方案1:使用确保父类空
        方案2:子类的构造器必须调用父类的构造器,手动调用其他构造器
    

Override

Overload
    重载:两同三不同   : 同一个类方法名相同, 形参类型 个数 顺序不同
override
    重写:  子类中方法签名相同
    static方法不会重写
    私有方法不会重写
    属性不会重写

debug problem solving, troubleshooting

Break point
, double-click the breakpoint icon
watch variables and code execution

f5:单步进入
f6:逐行执行
f7:单个方法|功能执行
f8:断电结束|下一个断点

Package

Carry out their duties to protect data access

    访问权限
        public 公开的公共的,都可以用
        protected 受保护的(父类子类之间);合法继承,如果在不同包下,子类继承父类,那么父类中被protected修饰的那么只有子类可以使用
        friendly|default 友好的默认的(空着); 家庭和睦 同一包下可以使用
        private 私有的,只有本来可以使用
    javabean
        存储数据
        空构造;属性私有化;set和get;重写equals和toString
        各司其职
        单例
             * 1、私有的构造器
             * 2、创建一个私有的静态的属性 对象供外部访问
             * 3、提供公共的静态方法 访问该属性
             单个实例,控制对象
                构造私有化

Code
User

    package shsxt.login;
/**
 * 用户
 * 姓名	学号
 * @author zhuch
 *
 */
public class User {
	
	private String name;
	private String studentNumber;
	public String getName() {
		return name;
	}
	
	public User() {
		// TODO Auto-generated constructor stub
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getStudentNumber() {
		return studentNumber;
	}
	public void setStudentNumber(String studentNumber) {
		this.studentNumber = studentNumber;
	}
	@Override
	public String toString() {
		return "User [name=" + name + ", studentNumber=" + studentNumber + "]";
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		result = prime * result + ((studentNumber == null) ? 0 : studentNumber.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		User other = (User) obj;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		if (studentNumber == null) {
			if (other.studentNumber != null)
				return false;
		} else if (!studentNumber.equals(other.studentNumber))
			return false;
		return true;
	}
	
	
	
}

UserDao

package shsxt.login;
/**
 * 往数据库添加数据
 * @author zhuch
 *
 */
public class UserDao {
	
	public User getUser() {
		User user=new User();
		user.setName("zcp");
		user.setStudentNumber("123");
		return user;
	}
}

UserService

package shsxt.login;
/**
 * 业务逻辑
 */
public class UserService {
	
	private UserDao userService;
	
	public UserService() {
		userService=new UserDao();
	}
	
	public boolean login(User user2){
		User user=userService.getUser();
		return user.equals(user2);
	}
}

UserWeb

package shsxt.login;

import shsxt.util.MyUtil;

public class UserWeb {
	private UserService userservice;
	public UserWeb() {
		userservice=new UserService();
	}
	
	public String input() {
		
		String name=MyUtil.getStrFromConsole("请输入姓名:");
		String studentNumber=MyUtil.getStrFromConsole("请输入学号:");
		//拿到从键盘输入的值存到一个新的User对象中
		User user=new User();
		user.setName(name);
		user.setStudentNumber(studentNumber);
		
	
		//登入
		boolean isSucceed=userservice.login(user);
		return isSucceed?"登入成功":"登入失败,信息错误!";
		
	}
}

UserApp

package shsxt.login;

public class UserApp {
	
	public static void main(String[] args) {
		UserWeb userweb=new UserWeb();
		String str=userweb.input();
		System.out.println(str);
		
	}
}


Published 13 original articles · won praise 13 · views 492

Guess you like

Origin blog.csdn.net/Rabbit_white_/article/details/104061232