Java语法基础学习DaySix
一、JavaBean——可重用组件
1.JavaBean是指符合以下标准的Java类:
(1)类是公共的
(2)有一个无参的公共的构造器
(3)有属性,且有对应的get、set方法
2.好处
用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用Java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一个随时随地的复制和黏贴的功能,而不能关心任何改变。
二、包——package
1.作用:对类文件进行分类管理;给类文件提供多层名称空间;一般包的出现是为了区分重名的类,所以包名要尽量唯一
2.注意事项
包名的所有字母都要用小写。
三、访问权限修饰符public 、 private 、 protected 、 default(默认,即没有修饰符)
1.访问权限大小
public:任何地方
protected:类内部、同一个包内、子类
default:类内部、同一个包内
private:类内部
2.注意事项
对于class的权限修饰只能是public或者default,public类可以在任何地方被访问,default类只可以被同一个包内的类访问。
四、多态
1.体现
(1)方法的重载和重写 (2)子类对象的多态性(父类的引用或者接口的引用指向了自己的子类的对象)//Person p = new Man();
2.好处
提高了程序的拓展性。比如在方法中形参的类型用父类类型,通过多态可以直接传进子类的对象。
3.弊端
当父类引用指向子类对象时,虽然提高了扩展性,但只能访问父类具有的方法,不可以访问子类特有的方法。
4.特点
(1)子类对象的多态性使用的前提:要有类的继承;要有子类对父类方法的重写
(2)程序运行时分为编译状态和运行状态。(编译时不创建对象,只检查语法错误)
对于多态性来说,编译时,看“左边”,将此引用变量理解为父类的类型,因此无法访问子类特有的方法;
执行时,看“右边”,关注真正对象的实体,即子类的对象,那么执行的方法是子类重写的。
(3)子类对象的多态性,并不适用于属性,即调用的都是引用变量所属的类中的属性。
5.强制类型转换
(1)想要访问子类特有的方法,可以通过强转符:() 将父类对象强制向下转换成子类引用。//Man m = (Man)p;
(2)判断对象是哪个具体的子类类型,可以使用instanceof关键字,格式:对象 instanceof 类型,返回一个boolean值。// if ( p instanceof Man)
instanceof可以判断对象是否实现了指定的接口或继承了指定的类。 // Man m = (Man)p;
6.代码案例
class Test{ public static void main(String[] args){
Test t = new Test();
t.method(new Animal());
System.out.println("========");
t.method(new Dog());
System.out.println("========");
t.method(new Cat());
} public void method(Animal a){//通过多态性,使父类引用可以指向子类对象
System.out.println(a.number);//输出1,说明调用的是Animal类中的number
a.eat();
a.run();
if(a instanceof Dog){
Dog d = (Dog)a;//强制向下转换,才能调用子类特有的bake方法
d.bake();
}
if(a instanceof Cat){
Cat c = (Cat)a;
c.bake();
}
}
} class Animal{
int number = 1; public void eat(){
System.out.println("吃东西");
}
public void run(){
System.out.println("走路");
}
} class Dog extends Animal{
//创建父类同名变量number
int number = 2;
//重写父类eat和run方法
public void eat(){
System.out.println("吃狗粮");
}
public void run(){
System.out.println("狗爬中");
}
public void bake(){
System.out.println("汪汪叫");
}
} class Cat extends Animal{
int number = 3; public void eat(){
System.out.println("吃猫粮");
}
public void run(){
System.out.println("走猫步");
}
public void bake(){
System.out.println("喵喵叫");
}
}
五、object——所有Java类的根父类
1.equals方法
(1)格式:boolean equals(Object obj)
(2)特点
A:只能处理引用类型变量,不能处理基本数据类型变量
B:在Object类中,equals()方法比较的是两个引用变量的地址值是否相等
C:像String类、包装类、FIle类、Date类等这些类重写了Object类的equals()方法,比较的是两个对象的“实体内容”是否完全相同。
2.toString方法
(1)格式:public String toString();返回值:getClass().getName() + "@" + Integer.toHexString(hashCode())
(2)注意事项
A:当我们直接打印一个对象的引用时,实际默认调用的就是这个对象的toString()方法
B:当我们打印的对象所在的类没有重写Object中的toString方法时,调用的是Object类中定义的toString方法,返回此对象所在的类的类名及对应的堆空间中对象实体的首地址值。
C:可以通过对Object的toString方法的重写,使对象对应的字符串内容有意义。
Java语法基础学习DaySix的更多相关文章
- Java语法基础学习DayEighteen(常用类)
一.String类 1.特点 String代表不可变的字符序列,底层用char[]存放. String是final的. 2.内存解析 3.常用方法 int length() char charAt(i ...
- Java语法基础学习DaySeven
---恢复内容开始--- 一.包装类——Wrapper 1.定义:针对八种基本数据类型定义相应的引用类型——包装类(封装类) boolean——Boolean byte——Byte ...
- Java语法基础学习DayThree
一.流程控制语句补充 1.switch语句 格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体 ...
- Java语法基础学习DayTwentyOne(网络编程)
一.IP地址和端口号 1.作用 通过IP地址,唯一的定位互联网上一台主机. 端口号标识正在计算机上运行的进程,不同进程有不同的端口号,被规定为一个16位的整数0~65535,其中0~1023被预先定义 ...
- Java语法基础学习DayTwenty(反射机制续)
一.Java动态代理 1.代理设计模式的原理 使用一个代理将对象包装起来, 然后用该代理对象取代原始对象. 任何对原始对象的调用都要通过代理. 代理对象决定是否以及何时将方法调用转到原始对象上. 2. ...
- Java语法基础学习DayNineteen(反射机制)
一.Refection定义 1.概述 Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性 ...
- Java语法基础学习DaySeventeen(多线程续)
一.线程的特点 1.线程的分类 java中的线程分为两类:守护线程和用户线程.唯一的区别是判断JVM何时离开. 守护线程是用来服务用户线程的,通过在start()方法前调用Thread.setDaem ...
- Java语法基础学习DaySixteen(多线程)
一.多线程的创建 1.作用 程序需要同时执行两个或多个任务时需要多线程. 程序需要实现需要等待的任务时,如用户输入.文件读写操作.网络操作.搜索等,需要多线程. 需要一些后台运行的程序时,需要多线程. ...
- Java语法基础学习DayFifteen(IO续)
一.缓冲流(处理流的一种) 1.作用:可以提高文件操作的效率 2.使用BufferedInputStream和BufferedOutputStream实现非文本文件的复制 特点:flush()方法 代 ...
随机推荐
- 20181013xlVba计算优秀率及合格率
Sub 计算高一优秀合格率() Dim Wb As Workbook Dim Sht As Worksheet Dim oSht As Worksheet Dim dOs As Object 'Out ...
- Mysql中Join用法及优化
Join的几种类型 笛卡尔积(交叉连接) 如果A表有n条记录,B表有m条记录,笛卡尔积产生的结果就会产生n*m条记录.在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者直接用f ...
- 【洛谷p2142】高精度减法
高精度减法第一遍没有过 高精度减法[传送门] 洛谷算法标签: 总之技术都在高精上了吧. 附代码: #include<iostream> #include<cstdio> #in ...
- 【Java】XML
一.XML XML(Extensible Markup Language),可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言. 格式: <?xml version="1. ...
- 自定义putty主题
PuTTY很早之前就没有更新了(0.62),因为都是开源的所以有人branch出来做了增强,如这个PuTTY tray,增加了超链等功能: https://puttytray.goeswhere.co ...
- jeasyUI DataGrid 根据屏幕宽度自适应, 改变右侧滚动条Size
PC浏览器的Datagrid可以显示多几列,但是在手机浏览器时,只能有选择性的显示前几列. $(window).resize(function () { if (document.body.clien ...
- 禁止网站被别人通过iframe引用
https://blog.csdn.net/dugujiancheng/article/details/51669164 解决方案一:js方法这种方法不可靠,不推荐使用 <script type ...
- ci框架url去掉index.php
去掉index.php: 1.修改配置文件, $config['index_page'] = ' '; 设置空 2.修改Apache,搜索 htaccess 将 AllowOverride None ...
- Spring Boot + Spring Cloud 实现权限管理系统 (集成 Shiro 框架)
Apache Shiro 优势特点 它是一个功能强大.灵活的,优秀开源的安全框架. 它可以处理身份验证.授权.企业会话管理和加密. 它易于使用和理解,相比Spring Security入门门槛低. 主 ...
- UVa 11210 - Chinese Mahjong 模拟, 枚举 难度: 0
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...