一、继承(inheritance)
1.理解
extends 实现继承,当一个类没有显示的继承父类,此父类即Object
2.继承链
object 父类
parent System String 子类
3.单继承
一个父类可以存在多个子类,一个子类只能有一个父类
/** 父类 F M 子类 A B C */ public class F{ public void play(); } class M{ public void play(); } class A extends F{} //A继承F class C extends F{ M mother; //一个父亲 一个母亲 } //错误的继承 class B extends F,M{}
4.super
1)super表示存在继承的子类中,显示查找父类的信息。
2)this:代表调用者自身;super:代表调用者的父亲对象,只能使用不能破坏也看不到地址
3)super.属性:当子类与父类的属性同名,访问父类的属性
4)super.方法():在子类与父类的方法签名相同|重写,访问父类方法。
5)super():在子类的构造器首行,显示调用父类的构造器;任何的构造器默认是调用父类的空构造。
5.Override重写
1)overload 重载:两同三不同:同一个类方法名相同,形参类型 个数 顺序不同。
2)override 重写:子类中方法签名相同
/** servlet: doGet doPost方法重写 */ public class Servlet { public Servlet() { service(); } public void service() { this.doGet(); this.doPost(); } public void doGet() { System.out.println("Servlet doget"); } public void doPost() { System.out.println("Servlet doPost"); } public static void main(String[] args) { new HttpServlet(); new FtpServlet(); } } class HttpServlet extends Servlet{ public HttpServlet() { super(); } @Override public void doGet() { System.out.println("HttpServlet doget"); } @Override public void doPost() { System.out.println("HttpServlet doPost"); } } class FtpServlet extends Servlet{ public FtpServlet() { super(); } @Override public void doGet() { System.out.println("FtpServlet doget"); } @Override public void doPost() { System.out.println("FtpServlet doPost"); } }
二、debug(排除错误)
1.打断点
在main()对象中双击断点图标
2.观察与代码执行
F5:单步进入
F6:单步跳出—–>逐行执行
F7:单个方法|功能执行
F8:断点结束 下一个断点
三、封装(encapsulation)
1.理解
通过访问权限 各司其职 保护数据
2.四个访问权限
public 公开的公共的;一览无遗
protected 受保护的(父类子类之间);合法继承
friendly|default:友好的默认的(空着);家庭和睦
private :私有的 自私自利
本类:public protected friendly private
同包其他类:public protected friendly
不同包子类(子对象访问):public protected
不同其他类:public
3.javaBean
存储数据: po jo vo bo
空构造;属性私有化;setter与getter 访问器;重写 equals
toString
public class Person { private String name; private int age; private String gender; 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 getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Person other = (Person) obj; if (age != other.age) return false; if (gender == null) { if (other.gender != null) return false; } else if (!gender.equals(other.gender)) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", gender=" + gender + "]"; } }
4.各司其职
用户登录案例:
分层:
javaBean:
/** * javaBean 存储数据 * * */ public class User { //用户名 private String uname; //密码 private String upwd; //构造器 public User() { } //getter和setter访问器 public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public String getUpwd() { return upwd; } public void setUpwd(String upwd) { this.upwd = upwd; } //重写 equal toString @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 (uname == null) { if (other.uname != null) return false; } else if (!uname.equals(other.uname)) return false; if (upwd == null) { if (other.upwd != null) return false; } else if (!upwd.equals(other.upwd)) return false; return true; } @Override public String toString() { return "User [uname=" + uname + ", upwd=" + upwd + "]"; } }dao层
/** * 与数据库交互 * */ public class UserDao { //存储模拟数据 public User getDao() { User user=new User(); //用户名 xiaoxiao 密码:123456 user.setUname("xiaoxiao"); user.setUpwd("123456"); return user; } }service层
/** * service 登录业务 承上启下 * */ public class UserService { //使用私有的 安全性 private UserDao serviceDao; public UserService(){ serviceDao=new UserDao(); } //登录 public boolean UserLogin(User input) { //数据库获取数据 User dbDate=serviceDao.getDao(); return dbDate.equals(input); } }web层
/** * 用户界面 * */ public class UserWeb { private UserService userSerive; public UserWeb() { userSerive =new UserService(); } public String inputUser(){ //从键盘输入用户名和密码 String uname=MyUtil.getStrFromConsole("请输入用户名:"); String upwd=MyUtil.getStrFromConsole("请输入密码:"); User user=new User(); user.setUname(uname); user.setUpwd(upwd); //登录 要比较用户名和密码 boolean success=userSerive.UserLogin(user); //返回成功和失败 return success?"成功":"失败"; } } app模式
public class UserApp { public static void main(String[] args) { // TODO Auto-generated method stub UserWeb userWeb=new UserWeb(); String result=userWeb.inputUser(); System.out.println(result); } }
5.封装实现单例
利用封装实现单例 a single instance of class
1、私有的构造器
2、创建一个私有的静态的属性 对象供外部访问
3、提供公共的静态方法 访问该属性
/** * 1.私有构造器 * 2.创建私有的静态属性,对象供外部访问 * 3.提供公共静态方法,访问该属性 * */ public class Car { //1.创建私有的静态属性,对象供外部访问 private static Car car=new Car(); //2.私有构造器 private Car() { } //提供公共静态方法,访问该属性 public static Car car() { return car; } }public class CarApp { public static void main(String[] args) { // TODO Auto-generated method stub Car car1=Car.car(); Car car2=Car.car(); System.out.println(car1==car2); } }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/121494.html