/*一般函数与构造函数的区别
构造函数:对象创建时,就会调用与之对应的构造函数,对对象进行初始化
一般函数:对象创建时,需要函数功能时才调用 构造函数:一个对象对象创建时,只调用一次
一般函数:对象创建时,可以被调用很多次
*/ /*当成员变量和局部变量重名时。可以用this来区分
this:代表对象。 代表那个对象?当前对象
this就是所在函数所属对象的引用
简单的说:那个对象调用了this所在的函数,this就代表那个对象
this也可以用于在构造函数中调用其他构造函数
注意:只能定义在构造函数的第一行。因为初始化函数要先执行 public Demo(String name,int age)
{
this.name=name;
this.age=age;
}
public boolean bijiao(Demo p)
{
return this.age=p.age;
}
pyblic static void main(String[] args)
{
Demo p1=new Demo("超霸",18);
Demo p2=new Demo("暮雪",20);
p1.bijiao(p2);
} */ /*,String name ///成员变量,实例变量 static String name //静态变量,类变量 成员变量and静态变量的区别?
1,两个变量的生命周期不同
成员变量随着对象的创建而存在,随着对象被回收而释放
静态变量随着类的加载而存在,随着类的消失而消失
2,调用方式不同
成员变量只能被对象调用
静态变量可以被对象调用,还可以被类名调用
3,数据存储位置不同
成员变量数据存储在堆内存中,所以也叫对象的特有数据
静态变量存储在方法区的静态区,所以也叫对象的共享数据
*/ /*静态使用的注意事项
1,静态方法只能访问静态成员。(非静态既可以访问静态,又可以访问非静态)
2,静态方法中不可以使用this或者super关键字
3.主函数是静态的
静态在方法区的静态区,栈内
4.静态什么时候用?
1静态变量 2.静态方法
*/
1 /*extends继承 implements接口继承 public class 类名 implements 接口A,接口B{类体}
public interface 接口a extends 接口B{
常量定义 方法声明
}
class 子类 extends 父类 */
class Person
{
String name;
int age;
} class Student extends Person
{
//String name;
//int age;
void study()
{
System.out.println("good good student study");
}
} /*abstract 抽象类and接口
abstract class 类名{{类体}
abstract void show();
抽象类:笼统,模糊,看不清。不具体
特点
1.方法只有声明没有实现时。该方法就是抽象方法。需要被abstract
抽象方法必须定义在抽象类中
2.抽象类不可以被实例化,为什么?因为调用抽象方法没意义
3.抽象类必须有其子类覆盖了所有的抽象方法后,该子类才可以实例化
否则,这个子类还是抽象类。 1.抽象类中有构造函数吗
有。用于给子类对象进行初始化
2.抽象类可以不定义抽象方法吗?
可以的。但是很少见,目的就是不让该类创建对象。AWT的适配器对象就是这种类
通过这个类中的方法有方法体。但是却没有内容
abstract class Demo{
void show1()
{}
void show2()
{}
}
3.抽象函数不可以和那些关键字共存?
************抽象方法要被覆盖
private 不行
static 不行 静态无法被覆盖 静态不需要对象。无意义
final 不行。。最终的,无法被覆盖
4.抽象类和一般类的区别
相同点:
抽象类和一般类都是用来描述事物的。都在内部定了成员
不同:
1.一般类有足够的信息描述事物
抽象类描述的信息有可能不足。
2.一般类中不能定义抽象方法。只能定义非抽象方法
抽象类中可定义抽象方法。同时科院定义非抽象方法
3.一般类可以被实例化
抽象类不可以被实例化
5.抽象类一定是个父类吗?
是的。因为需要子类覆盖其方法后才可以对子类实例化 定义接口关键字
interface Demo
{ 常量定义 方法声明
abstract void show1();
}
对于接口中的常见的成员,而且这些成员都有固定的修饰符
全局常量 public static final
抽象方法 public abstract
接口中的成员都是公共权限
interface 类名{
接口的定义
类与类之间是继承关系 类与接口直接是实现关系
接口不可以实例化
只能由实现了接口的子类并覆盖了接口中所有的抽象方法后,该子类才可以实例化
否则这个子类就是一个抽象类
} 抽象类和接口的异同点
不同点:1.抽象类需要被继承,而且只能单继承
接口需要被实现。而且是多实现。
2.抽象类中可以定义抽象方法和非抽象方法,子类继承后,可以直接使用非抽象方法。
接口中只能定义抽象方法,必须由子类去实现
3.抽象类的继承是is a关系,在定义该体系的基本共性内容
接口的实现是like a关系,在定义体系额外功能。
*/ /*对象的多态性 class 动物
{}
class 猫 extends 动物
{}
class 狗 extends 动物
{}
猫 x= new 猫();
动物 X=new 猫(); 一个对象。2中形态
猫这类事物即具备猫的形态,又具备着动物的形态。这就是对象的多态性
简单说:就是一个对象对应着不同类型 多态在代码中的体现
父类或者接口的引用指向其子类的对象 */ /*内存的划分 1寄存器
2本地方法区
3方法区
4栈内存
存储的都是局部变量,局部变量一结束就消失
变量一旦离开作用域一旦结束。改变量就自动释放
生命周期短,更新快
5堆内存 存储的是数组和对象(其实数组就是对象),凡是new建立的都在堆中。
实体用来封装存储对象多个数据。
堆特点
1.每个实体都有首地址
2.堆内存中没一个变量都有默认初始化值,根据类型的不同而不同
3.垃圾回收机制 public class CalcDemo1 {
public static void main(String[] args) {
for(int x=0;x<5;x++)
{ }
System.out.println(x);
}
} */ /*设计模式
对问题行之有效的解决方式。其实它是一中思想
单例设计模式
解决的问题:就是可以保证一个类在内存中的对象唯一性
如:对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性
如何保证对象唯一性?
1.不允许其他程序用new创建该类对象。
2.在该类创建一个本类实例
3.对外提供一个方法让其他程序可以获取该对象
步骤
私有化该类构造函数
通过new在本类中创建一个本类对象
定义一个公有方法,讲创建的对象返回
*/ /*单列设计模式。保证对象唯一性 class SingleDemo
{
public static void main(String[] args)
{ Singel t1=Singel.getInstance();
Singel t2=Singel.getInstance();
t1.setNum(10);
t2.setNum(20);
System.out.println(t1.getNum());
System.out.println(t2.getNum());
}
}
对象唯一性实现方法
class Singel //饿汉式 类一加载。对象就已经存在了。。一般用这个
{
private int num;
private static Singel s=new Singel();
private Singel(){}
public static Singel getInstance()
{
return s;
}
public void setNum(int num)
{
this.num=num;
}
public int getNum()
{
return num;}
} class Singel2 //类加载进来,没有对象。只有调用get方法时,才会创建对象 懒汉式
{
private static Singel2 s=null;
private Singe12(){}
public static Singel2 getinfo()
{
if(s==null)
s=new Singel2();
return s;
} } */ /*Thread多线程 继承 重写run方法。代码放在run中 start启动线程并调用run方法 */

  

最新文章

  1. volcanol_Linux_ 问题汇总系列_4_Thinkpad_E40_0578MDC_在Fedora 13 Linux(FC13)中如何安装无线网卡驱动
  2. Python开发入门与实战8-基于Java的集成开发环境
  3. Microsoft.Extensions.Options支持什么样的配置类?
  4. TCP协议中的三次握手和四次挥手(图解) 转载
  5. 阮一峰博客里面css3的display:flex的布局
  6. 谈谈asp.net中的&lt;% %&gt;,&lt;%= %&gt;,&lt;%# %&gt;&lt;%$ %&gt;的使用
  7. nginx模块编程之获取客户ip及端口号
  8. Android音频底层调试-基于tinyalsa
  9. Apache Struts 安全措施绕过漏洞(CVE-2013-4310)
  10. jquery ajax 提交表单(file &amp;&amp; input)
  11. Java数据结构漫谈-ArrayList
  12. C++关联容器综合应用:TextQuery小程序
  13. 去掉input text后面的叉
  14. SublimeText3编译JavaScript
  15. String to Integer (atoi) - 字符串转为整形,atoi 函数(Java )
  16. dedecms利用memberlist标签调用自定义会员模型的会员信息
  17. eclipse 按住ctrl 按钮没有反映
  18. PHPCMS v9.6.0 任意文件上传漏洞分析
  19. scoring_criteria.go
  20. j2ee课程设计—基于activiti的请休假系统

热门文章

  1. CPU:网卡老哥,你到底怎么工作的?
  2. jdk从1.8降到jdk1.7失败
  3. 解决右键notepad++打开时提示, ShellExecute failed (2): Is this command correct?
  4. day2(APlview+Serializers使用)
  5. PyQt(Python+Qt)学习随笔:QTreeWidgetItem项获取项的父项或子项
  6. PyQt(Python+Qt)学习随笔:Qt Designer中部件的layoutDirection属性
  7. PyQt(Python+Qt)学习随笔:QAbstractItemView的showDropIndicator属性
  8. PHP中双引号引起的命令执行漏洞(Kuwebs代码审计 )
  9. pytorch 损失函数(nn.BCELoss 和 nn.CrossEntropyLoss)(思考多标签分类问题)
  10. Scrum 冲刺 第三篇