- 浏览: 1590073 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
继承
/** 将学生和工人的共性描述提取出来,单独进行描述, 只要让学生和工人与单独描述的这个类有关系,就可以了. 继承: 1.提高代码的复用性 2.让类与类之间产生了关系, 有了这个关系类,才有了多态的特性.. */ class Persion{ String name; int age; } class Student extends Person{ //String name; // int age; void study( System.out.println("goog study"); ) class Worker extends Person{ // String name; // int age; void work(){ System.out.println("good work"); } } } /* 注意:千万不要为了获取其他类的功能,简化代码而继承, 必须是类与类之间有所属关系才可以继承,所属关系 is a. */ class A{ void demo1(){} void demo2(){} } class B extends A { //void demo1(){} 发现 B也有 demo2() 这个功能 说明不能乱继承,我们可以将 demo抽成出一个 父类 .但是 B 不能继承 A void demo3()} } /* Java语言中,Java只支持单继承,不支持多继承. 因为多继承 容易带来安全隐患. 当功能内容不同时,子类对象不确定要运行那个 但是java保留了这种机制,并用另一种体现形式来完成,多实现 */ class A{ void show(){ System.out.println("A"); } } class B{ void show(){ System.out.println("B"); } } class C extends A,B{ public statiac void main(String [] args){ C c=new C(); c.show(); //如果出现多继承 此时就不知道是打印 A 还是 B 所以java不支持多继承. } } /* 要先使用体系,先查阅体系父类的描述,因为父类中定义了该体系中共性功能. 通过了解共性功能,就可以知道该体系的基本功能 在具体调用时,要创建最子类的对象,为什么呢? 1:一是因为有可能父类不能创建独享 2.创建子类对象可以使更多的个功能,包括基本的也包括特有的 */
//聚集 : has a 分为下面两种
1.聚合: 球队和 球员 (球队少一个球员没有什么大的问题)
2.组合: 手是人体一部分 (实物联系更紧密)
//子类 父类中的成员的特点
类中的成员
1.变量
2.函数
3.构造函数
//不同的变量
class Fu{ int num1=4; } class Zi extends Fu{ int num2=5; } class ExtendsDemo{ Zi z=new Zi(); System.out.println(z.num1+"...."+z.num2); // 4....5 }
//相同的变量
class Fu{ int num1=4; } class Zi extends Fu{ int num1=5; } class ExtendsDemo{ Zi z=new Zi(); System.out.println(z.num1+"...."+z.num1); // 5....5 }
//子类中的方法
class Fu{ /*private*/ int num1=4; } class Zi extends Fu{ int num1=5; void show(){ System.out.println(this.num1); //this 表示本类对象的引用 输出 5 System.out.println(super.num1): //super表示父类对象的引用 输出 4,如果num为private 不能使用 num } } class ExtendsDemo{ Zi z=new Zi(); z.show(); // 5 4 }
//如果 子类中没有 和父类相同的变量 那就 this=suuper 中的变量
class Fu{ int num=4; } class Zi extends Fu{ //int num=5; void show(){ System.out.println(this.num); System.out.println(super.num); // } } public class day7_T1 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Zi z=new Zi(); z.show(); // 4 4 } }
//父子类中 函数的特点
class Fu{ void show1(){ System.out.println("fu show"); } } class Zi extends Fu{ void show2(){ System.out.println("zi show"); } } public class day7_T1 { public static void main(String[] args) { // TODO Auto-generated method stub Zi z=new Zi(); z.show1(); z.show2(); } //输出 fu show zi show }
//父子类 函数名相同
/* 当子类和父类出现一模一样的函数时 当子类对象调用该函数的时候,会运行子类函数的内容 如同父类的函数被覆盖一样 这种情况是函数的另一种特性 : 重写(覆盖,可以发现 重写 发生在子类和父类之间 ,函数每个部分完全相同) 当子类继承父类的时候,子类就会沿袭父类的所有公共成员. */ class Fu{ void show(){ System.out.println("fu show"); } } class Zi extends Fu{ void show(){ System.out.println("zi show"); } } public class day7_T1 { public static void main(String[] args) { // TODO Auto-generated method stub Zi z=new Zi(); z.show(); } //zi show }
//重写的特性2
//可以看出 适合后期程序的升级 和 扩展 // 重写可以保留父类的功能定义,并可以重写功能的内容. class Fu{ void show(){ System.out.println("fu show"); } } class Zi extends Fu{ void show(){ System.out.println("zi show"); super.show(); //还可以继续使用父类的函数 或其他成员 } } public class day7_T1 { public static void main(String[] args) { // TODO Auto-generated method stub Zi z=new Zi(); z.show(); } }
//注意事项
//重写 (覆盖) 1. 子类覆盖父类,必须保证子类权限大于等于 父类权限 ,才可以覆盖,否则编译失败 2. 静态只能覆盖静态. 重写: 父子类方法要一模一样 包括返回值 重载: 只看同名函数的参数列表 //注意下面不是重写 class Fu{ private void show(){ System.out.println("fu show"); } } class Zi extends Fu{ void show(){ //这里没有重写 ,因为 子类根本就不知道父类有 show 这个防范 System.out.println("zi show"); //super.show(); //还可以继续使用父类的函数 或其他成员 } } public class day7_T1 { public static void main(String[] args) { // TODO Auto-generated method stub Zi z=new Zi(); z.show(); } }
//父子类中的构造函数特点
//父子类中 构造函数 不是重写 因为 方法名不同 class Fu{ Fu(){ System.out.println("fu run"); } } class Zi extends Fu{ Zi(){ //super(); 默认 在第一行 有这个 语句 调用父类 . System.out.println("zi run"); } } public class day7_T1 { public static void main(String[] args) { Zi z=new Zi(); } } //输出 fu run zi run //说明 在初始化子类的时候 先加载父类 然后加载子类 继续证明上面的观点--接下来看看 class Fu{ static{ //静态代码块 只要该类被JVM 加载到内存 就会运行这个 里面的内容 System.out.println("fu static run"); } { //构造代码块 在所有 构造函数前都会运行 ,除非不用构造函数 System.out.println("fu gouzao run"); } Fu(){ System.out.println("fu run"); } } class Zi extends Fu{ static{ System.out.println("zi static run"); } { System.out.println("zi gouzao run"); } Zi(){ //super(); 默认都有 这行 System.out.println("zi run"); } } public class day7_T1 { public static void main(String[] args) { Zi z=new Zi(); } } //输出 fu static run zi static run fu gouzao run fu run zi gouzao run zi run
//子类中所有的构造方法的第一行都会默认有 super() 这行 可以显示 调用 和 可以省略
(因为初始化的过程必须先做.只有做了,子类才能使用父类成员)
class Fu{ static{ //静态代码块 只要该类被JVM 加载到内存 就会运行这个 里面的内容 System.out.println("fu static run"); } { //构造代码块 在所有 构造函数前都会运行 ,除非不用构造函数 System.out.println("fu gouzao run"); } Fu(){ System.out.println("fu run"); } Fu(int x){ //如果不调用该类中的这个构造方法 就不会被运行 System.out.println("fu run"+x); } } class Zi extends Fu{ static{ System.out.println("zi static run"); } { System.out.println("zi gouzao run"); } Zi(){ //super(); 默认都有 这行 System.out.println("zi run"); } Zi(int x){ //super(); 默认都有 这行 System.out.println("zi run"+x); } } public class day7_T1 { public static void main(String[] args) { Zi z=new Zi(4); } } //输出 fu static run zi static run fu gouzao run fu run zi gouzao run zi run4
//为什么子类一定要访问父类中的构造函数??
class Person{ String name; //默认为0 //Perseon(){} 显示写出 默认构造函数 Person(String name){ //发现 我们没有写 那个默认的构造函数 this.name=name; System.out.println("fu run"+this.name); } } class Student extends Person{ Student(){ //super(); 报错 因为 父类中 没有显示写出构造函数,而出现了其他构造函数,一般我们建议将 类的默认构造函数显示写出来. super("xx"); //如果没有写父类默认构造函数 ,只能调用 其他构造函数 System.out.println("zi run"); //super("xx"); 写这里也报错 super 必须放在第一行 . } Student(String name){ //super(); 这里也不能写 super(name); System.out.println("zi run" +this.name); //如果不调用父类的构造函数 我们就拿不到这个值了. } } public class day7_T2 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Student stu=new Student(); System.out.println(new Person("xx").name); } } //输出 fu runxx zi run fu runxx xx 只要子类继承了父类,就可以沿袭父类中所有公共成员, 既然 需要使用到 父类的成员 ,所以父类 必须要先实例化.必须先加载 ,所以 super只能放在第一行 ,这样就是为了后面的子类能使用其父类中的成员. 上面由于只写了一个有参数构造函数 ,所以下面 的Student 只能都调用 那个有参数的构造函数.
//this 和super 的关系 (一样的用法)
class Person /*extends Object*/{ String name; //默认为0 //Perseon(){} 显示写出 默认构造函数 Person(String name){ //发现 我们没有写 那个默认的构造函数 this.name=name; System.out.println("fu run"+this.name); } } class Student extends Person{ Student(){ super("xx"); //如果没有写父类默认构造函数 ,只能调用 其他构造函数 System.out.println("zi run"); } Student(String name){ this(); //调用子类自己的 默认构造函数 由于 上面的构造函数 中调用 super("xx") 所以这句话可以了 //super(); // 发现 写了this()后 这句报错了, 因为 super 要在第一行 //this(); //发现 先写 super后 在写 this() 也不行 因为 构造函数中 只能调用一次 父类构造方法 ,而且 super要放在第一行 ,所以这两个不能同时出现 System.out.println("zi run" +this.name); //如果不调用父类的构造函数 我们就拿不到这个值了. } } public class day7_T2 { public static void main(String[] args) { Student stu=new Student("aa"); } } //发现 this() 和 super() 不能同时出现在子类的构造函数中. this() 可以代替super() 因为 this()中 也有 super() 这个语句
//final: 最终,作为一个修饰符
1.可以修饰类, 函数 ,变量
2.被final修饰的类不可以继承,(避免 ,子类继承父类后,将父类里面功能该个面目全非)
3.被final修饰的方法不可以重写 (如果某个类中一些方法 可以重写,有些不行)
4.被final修饰的变量 是一个常量 ,只能赋值一次, 即可以修饰成员变量,也可以修饰局部变量.(常量建议都全大写,多个单词间使用 "_" 下划线连接)
当描述事物的时候一些数据的出现值是固定的,那么这是为了增强阅读性,都给这个值起个名字,方便阅读,而这个值不需要改变,所以就加上final
5.内部类定义在该类的局部位置上时,只能访问该具备被final修饰的局部变量
class /*final*/ ArraySort{ final static int NUMBER=9; //终身为 5 final double PI_VALUE=3.14; //常量 /*final*/ void intSort(int[] arr){ //修饰方法 final int INDEX=5; //终身为 5 System.out.println("int 类型的数组 开始排序...."); //功能代码前面的例子有 } } class SubSort extends ArraySort{ void intSort(int[] arr){ //如果 父类方法 被修饰后 这句就报错了 System.out.println("haha"); //被子类 重新出来 haha 了 失去了原有数组排序功能. 此时就只有 使用 final了 防止 其他类来重新类中的方法. } }
抽象类
/** * 当多个类中初相相同功能,但是功能主体不同,这时候可以进行向上抽取,只抽取功能定义,而不定义主体. * * 抽象 :看不懂 * 1.抽象方法一定在抽象类中 * 2.抽象方法和抽象类都必须被abstract关键字修饰 * 3.抽象类不可以用new 创建对象,因为调用抽象方法没有意思 * 4.抽象类中的抽象方法要被使用,必须由子类复写所有的抽象方法,建立子类对象调用. * 如果子类只覆盖部分抽象方法,那么子类还是一个抽象类. * * 抽象类和一般类没有太大的不同 * 该如何描述事物,就如何描述事物,只不过,该事物出现一些不太明确的行为.juic * 这些不确定的部分,也是该事物的功能,需要明确出现,但是无法定义主体. * 通过抽象方法来表示 * * 抽象类比一般类多个抽象函数 * 抽象类不可以实例化 * 抽象类中可以不定义抽象方法 * * abstract 只能修饰 类和方法 不能修饰 变量 * 还可以不让该类建立对象. */ abstract class Students{ abstract void study();/*{ System.out.println("study"); //如果子类 的行为不一样 这个方法就没有用了 }*/ } class BaseStudent extends Students{ void study(){ System.out.println("base study"); } } class AdvanceStudent extends Students{ void study(){ System.out.println("advance study"); } }
//案例2 采用抽象设计
/** * 假如我们在开发一个系统是需要对员工进行建模, * 员工包含3个属性, 姓名,工号,工资 * 经理也是员工,除了员工外还有奖金属性 * 使用继承的思想设计出员工累和经理类,要求类中提供必要的方法进行属性访问. */ abstract class Employee{ private String name; private String id; private double salary; //工资 public Employee(String name, String id, double salary) { this.name = name; this.id = id; this.salary = salary; } abstract void work(); } class Professional extends Employee{ //专业人士 public Professional(String name, String id, double salary) { super(name, id, salary); } @Override void work() { System.out.println("professional work"); } } class Manager extends Employee{ //管理员 private int bonus; //奖金 public Manager(String name, String id, double salary,int bonus) { super(name, id, salary); this.bonus=bonus; // TODO Auto-generated constructor stub } @Override void work() { System.out.println("manager work"); } }
//例子类
/** * [====模版方法设计模式===] * 1.在定义功能时候,功能的一部分是确定的,但是一部分是不确定,而确定的部分在使用不确定的部分, * 那么这时就将不确定的部分暴露出去,由该类的子类去完成. * * * 需求: 获取一段程序运行的时间 * 原理: 获取程序开始和结束的时间差就可以了 * 下面经过 三不变形 就成了 一个模版了 */ abstract class GetRunTime{ public final void getTime(){ //不想子类 把这个方法的功能给改了 long start=System.currentTimeMillis(); //固定代码 //封装这段代码的运行时间 ,如果代码段换了呢 /* for (int i = 0; i < 1000; i++) { System.out.println(i); }*/ runcode(); //不固定代码 long end=System.currentTimeMillis(); //固定代码 System.out.println("毫秒:"+(end-start)); //固定代码 } public abstract void runcode();/*{ for (int i = 0; i < 1000; i++) { System.out.println(i); } }*/ } class SubTime extends GetRunTime{ @Override public void runcode() { for (int i = 0; i < 4000; i++) { //变成 4000次 System.out.println(i); } } } public class TemplateDemo { /** * @param args */ public static void main(String[] args) { //GetRunTime grt=new GetRunTime(); //grt.getTime(); SubTime st=new SubTime(); st.getTime(); } }
//接口
/** *接口: 初期的理解,可以认为是一个特殊的抽象类 * 当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示 * * class: 用于定义类 * interface:用于定义接口 * * 接口定义时,格式特点: * 1.接口中的常见定义,常量,抽象方法. * 2.接口中的成员都有固定修饰符 * 常量:public static final * 方法:public abstract 不能为 static的 * * 接口: 是不可以创建对象, 因为有抽象方法 ,所以接口是一个特殊的抽象类 * 需要被子类实现,子类对象接口中的抽象方法全部复写,子类才可以实例化,否则子类也是一个抽象类 * * 接口可以被类多实现. * java不提供 多继承 ,变成了多实现 * * 1.类 和 类的关系 继承 * 2.类 和 接口 实现 * 3.接口 和 接口 继承 * */ interface Inter{ public static final int NUM=3; //public static final 可省略 public abstract void show(); //public abstract 可省略 } interface InterA{ public abstract void method(); //public abstract 可省略 public abstract void show(); //没有方法主体,所以由子类自己定义主体 } class Demo{ public void function(){} // } //继承一个父类 实现两个接口 class Test extends Demo implements Inter,InterA{ @Override public void show() { //股改了两类中的 show 方法 System.out.println(this.NUM); //System.out.println(super.NUM); //报错 } @Override public void method() { System.out.println(Inter.NUM); } } public class InterfaceDemo { public static void main(String[] args) { Test test=new Test(); System.out.println(Inter.NUM); //3 System.out.println(test.NUM); //3 System.out.println(Test.NUM); //3 // test.NUM=4; //是常量所以值不能被覆盖 } }
//接口间关系
interface A{ public abstract void show1(); int show(); } interface B extends A{ // b 有两个方法了 public abstract void show2(); //boolean show(); 继承的接口中不能很出现这个情况 } interface C extends B{ // c 有三个方法了 public abstract void show3(); } class InterRelation implements C{ @Override public void show2() {} @Override public void show1() {} @Override public void show3() {} @Override public int show() { // TODO Auto-generated method stub return 0; } }
//接口间的多继承
interface D{ // 因为 A E中没有 方法体 就不冲突 public abstract void show4(); } interface E { // c 有三个方法了 public abstract void show5(); } interface F extends D,E{ //因为 D E中没有 方法体 就不冲突 public abstract void show6(); }
//接口特点
/** * 接口的特点 * 1.接口是对外暴露的规则 * 2.接口是程序的功能扩展 * 3.接口可以用来实现 * 4.类和接口是实现的关系,而类可以继承一个类的同时实现多个接口 * 5.接口和接口之间有多继承关系 * 6.降低了耦合性. * * * 案例: 学生的行为 * * 继承 : 一般包含基本功能 is (你是我 是 其中的一个) * 接口 : 一般用于定义扩展功能 like (你像 我中的一个) */ abstract class StudentParent{ //基本功能 定义在类中 abstract void study(); void sleep(){ System.out.println("sleep"); } /*abstract void smoking(){//由于 又不是每个人都抽烟怎么办呢 ?? System.out.println("我吸的XX牌子的烟"); }*/ } interface smoker{ //扩展功能 定义在接口中 void smking(); } interface Wine{ //扩展功能 定义在接口 void drink(); } //学生 张三 除了学生外 还学会 抽烟喝酒 class ZhangSan extends StudentParent implements smoker,Wine{ @Override void study() {} @Override public void smking() {} @Override public void drink() {} }
评论
4 楼
Luob.
2013-03-28
luozhong915127 写道
提一点小意见,写是写的详细的,对于初学者,就不会有耐心去看下去,虽然简单,可是篇幅过多产生疲倦。呵呵。可以分篇幅写。
非常感谢,好的,下次注意
3 楼
luozhong915127
2013-03-28
提一点小意见,写是写的详细的,对于初学者,就不会有耐心去看下去,虽然简单,可是篇幅过多产生疲倦。呵呵。可以分篇幅写。
2 楼
Luob.
2013-03-28
temptation 写道
博主,第6天没有看到额
http://takeme.iteye.com/blog/1835768
1 楼
temptation
2013-03-28
博主,第6天没有看到额
发表评论
-
检测一个字符串是否在jvm的常量池中
2018-12-18 17:34 998public static boolean inPool( ... -
UTC时间, GMT时间 ,夏令时
2017-08-18 15:12 2282经常混淆于此,特地研究了一下,记录在此以备忘。 整个地 ... -
java 反射List
2017-02-18 01:58 5654package com.enhance.reflect; ... -
JDK1.5 Exchange 两个线程互换数据
2016-08-04 18:00 986import java.util.concurrent ... -
JDK1.5 CountDownLatch
2016-08-04 16:25 1055/* * 还有一个利用场景: ... -
java CyclicBarrier 循环障碍阻塞
2016-08-03 23:54 1009//一个同步辅助类,它允许一组线程互相等待,直到到达某个公 ... -
java 信号灯 Semaphore
2016-08-03 23:53 1825更多介绍http://blog.csdn.net/java20 ... -
java 使用读写锁设计一个缓存模型
2016-08-03 23:49 1417import java.util.HashMap; ... -
java 读写锁
2016-08-03 23:46 816import java.util.Random; i ... -
java 多个线程之间同步通信
2016-08-02 17:16 2397import java.util.concurrent ... -
jdk1.5 锁 Lock 和 Condition
2016-08-02 17:03 925// lock 练习 public class Lock ... -
JDK1.5 获取线程执行结果 Callable Future
2016-08-02 15:08 1173import java.util.Random; i ... -
JDK1.5 线程池
2016-08-02 14:48 802import java.util.concurrent ... -
java 多线程ThreadLocal
2016-08-02 00:13 1145import java.util.Random; ... -
java 定时器 Timer
2016-08-01 16:53 3893import java.util.Calendar; ... -
java 多线程同步+通信
2016-08-01 16:48 965/** *父子线程 交替打印10 次, 100次 ... -
java 线程同步
2016-08-01 16:43 1023import java.util.concurrent.l ... -
java多线程练习
2016-08-01 16:35 1842Java 传统多线程 Java 多线程同步 Java 多线 ... -
java 传统多线程
2016-08-01 16:34 1005/** * 传统多线程 */ public ... -
java 图片,剪切,缩放
2016-01-06 10:21 2230package out; import ja ...
相关推荐
- 类与抽象类:接口不能继承类,但类可以继承抽象类并实现接口。 3. **接口与USB编程**: - USB(Universal Serial Bus)设备编程通常涉及到Java的设备驱动编程,这在Java中通常是通过JNI(Java Native Interface...
接口在Java中扮演着规范和契约的角色,它允许类实现多个接口,从而实现多继承的效果。在这个主题中,"【IT十八掌徐培成】Java基础第06天-01.接口.zip"的课程可能详细讲解了以下关键知识点: 1. **接口的定义**:...
Day 11至Day 16,课程可能会进入更高级的主题,如集合框架(ArrayList、LinkedList、HashSet、HashMap等)、内部类、接口、抽象类以及设计模式。集合框架是Java编程中频繁使用的数据结构,理解和掌握各种集合类的...
17. 抽象类和接口的区别? 抽象类可以包含属性、方法的实现,而接口只包含方法的声明。Java 8之后,接口也可以包含默认方法和静态方法的实现。 18. 什么是类的反射机制? 反射机制是指在运行时动态获取类的信息和...
172 第9章 接口(精彩视频:47分钟) 174 9.1 什么是接口 174 9.1.1 接口的定义 174 9.1.2 访问接口里的常量 176 9.2 接口的使用 177 9.2.1 接口里的方法如何创建 177 9.2.2 接口引用怎么使用 178 9.3 什么是抽象类 ...
- 一个类只能继承一个抽象类,但可以实现多个接口。 21. **什么是类的反射机制?** - 反射机制允许程序在运行时检查和修改自身结构和行为的能力。 - 主要通过`Class`类及其相关API实现。 22. **类的反射机制中的...
- 接口支持多重继承,抽象类不能被继承多次。 20. **类的反射机制**:允许程序在运行时动态获取类的信息并调用方法。 21. **获取Class对象的三种方式**:`Class.forName()`, 类名.class, 对象实例.getClass()。 ...
匿名内部类是没有名字的内部类,通常用来实现接口或继承抽象类。 **13. 用JAVA实现一种排序,JAVA类实现序列化的方法(二种)** - **排序算法**: 如上文所述的快速排序。 - **序列化实现**: - 实现 `Serializable` ...
【描述】"毕向东0703 Java基础视频教程第07天 继承与接口03"揭示了这一系列视频的进度,表示这是第7天的学习内容,主要讲解的是继承与接口的第三部分。继承是面向对象编程的关键特性之一,它允许一个类(子类)...
- **抽象**:通过抽象类或接口来定义通用特征,为具体实现提供模板。 2. **类(Class)的定义**: - 类是对象的模板,用于描述一类对象的属性(变量)和行为(方法)。 - 在Java中,使用`class`关键字定义类,如...
- 抽象类支持继承的概念,接口则支持多重继承。 20. **类的反射机制** - 反射机制允许程序在运行时获取类的信息并直接操作对象。 - 主要涉及`Class`类和`Method`、`Field`等类。 21. **得到Class的三个过程** ...
抽象类和接口的区别? - **抽象类**:可以有构造器,可以有抽象和非抽象方法。 - **接口**:只能定义常量和抽象方法(JDK 8之后还可以有默认方法和静态方法)。 #### 19. 什么是类的反射机制? 反射机制允许程序...
抽象类为子类提供了一种模板设计,允许子类继承其特性并根据需要提供具体实现。 4. **代码解析** - 行5-6:`/*...*/` 是多行注释,用来描述类`Worm`所代表的内容。 - 行7-12:定义了四个静态常量`DIRECTION_UP`, ...
抽象类和接口的区别? - **抽象类**:可以包含抽象方法和具体方法,以及成员变量;可以被继承。 - **接口**:只能包含抽象方法(Java 8之后也可以包含默认方法和静态方法),不能包含成员变量(只有静态常量);一...
19. 抽象类和接口的区别。抽象类是指不能实例化的类,而接口是指一个抽象的规范。 20. 什么是类的返射机制?类的返射机制是指 Java 中的反射机制,可以通过反射机制来获取类的信息和调用类的方法。 21. 得到 Class...
抽象类可以实现接口,也可以继承具体类。抽象类中可以有静态的`main`方法,这意味着可以在抽象类中定义`main`方法来运行程序。 **十八、实现克隆** - **问题:** 写`clone()`方法时,通常都有一行代码,是什么? - ...
2.4 Java.net包中URLConnection类 2.5 AppletContext接口类 2.6 获取网络属性信息 2.7 创建输入流(InputStream)对象 3、SOCKET连接 3.1 Socket通信的一般结构 3.2 TCP Socket编程 3.2.1 Socket类 3.2.2 ServerSocket...
- 类可以实现多个接口,但只能继承一个抽象类。 #### 19. 什么是类的反射机制? 反射机制允许在运行时动态获取类的信息并操作类的对象,包括字段、方法和构造器。 #### 20. 类的反射机制中的包及核心类? 主要...