JAVA(2)
java面向对象编程的四大特征:
1、抽象
2、封装
3、继承
4、多态
封装
//职员
class Clerk
{
public String name;
//private私有的
private int age;
private float salary; public Clerk(String name,int age,float sal)
{
this.name=name;
this.age=age;
this.salary=sal;
}
//通过一个成员方法去控制和访问私有的属性
public float getSal()
{
return this.salary;
}
java提供四种访问控制修饰符(控制方法和变量的访问权限):
1.公开级别:用public修饰,对外公开
2.受保护级别:用protected修饰,对子类和同一个包中的类公开
3.默认级别:没有修饰符号,向同一个包的类公开
4.私有级别:用private修饰,只有类本身可以访问,不对外公开
包-必要性
包的三大作用:
区分相同名字的类
当类很多时,可以很好地管理类
控制访问范围
包的打包命令:
package com.xxx
包的命名规范:小写字母
java中常用包:
java.lang.* 自动引入
java.util.* 工具包
java.net.* 网络开发包
java.awt.* 窗口工具包
包的引入:
inport 包;(如:import java.awt.*;)
继承
class Pupil
{
//定义成员属性
private int age;
private String name;
private float fee; //交费
public void pay(float fee)
{
this.fee=fee;
}
}
继承解决类重复问题
所有的子类不需要重新定义属性和方法,只需要通过extends语句声明继承父类
class 子类 extends 父类
私有属性不能被继承(private)
继承-注意
子类最多只能继承一个父类(指直接继承)
java所有类都是Object类的子类
JDK6中有202个包3777个类、接口、异常、枚举、注释和错误
开发时多使用jdk帮助文档
有些时候必须继承一些类来实现更多的功能:
package com.shun;
import javax.swing.*;
public class Demo2 extends JFrame { public static void main(String []args)
{
Demo demo2=new Demo2(); } public Demo2()
{
this.setVisible(true);
this.setSize(200,200);
}
}
方法重载&方法覆盖
方法重载注意事项:
方法名相同
方法的参数类型,个数,顺序至少有一项不同
方法返回类型可以不同
方法的修饰符可以不同
<只是返回类型不一样,不能够构成重载>
方法的覆盖(子类有一个方法与父类的名称、返回值、参数一样)
public class Demo3{
public static void main(String []args){
//创建一只猫
Cat cat1=new Cat();
cat.cry();
dog1.cry();
}
}
class Animal
{
int age;
String name; public void cry()
{
System.out.println("我是动物");
}
}
//猫猫类
class Cat extends Animal
{
//覆盖父类
public void cry()
{
System.out.println("猫猫叫");
}
}
//狗类
class Cat extends Animal
{
//覆盖父类
public void cry()
{
System.out.println("狗叫");
}
}
注意:
1.子类方法的返回类型、参数、方法名称要和父类方法的返回类型、参数方法名称完全一样,否则编译出错。
2.子类方法不能缩小父类方法的访问权限。(比如public不能被protected覆盖)
多态
package com.shun;
public class Demo5 { public static void main(String [] args){
//多态
/* Cat cat=new Cat();
cat.cry();
Dog dog=new Dog();
dog.cry();*/
Animal an=new Cat();
an.cry();
an=new Dog();
an.cry();
}
}
//动物类Animal
class Animal
{
String name;
int age;
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 void cry()
{
System.out.println("不知道怎么叫");
}
}
class Dog extends Animal
{
//狗叫
public void cry()
{
System.out.println("狗叫");
}
}
class Cat extends Animal
{
//猫自己叫
public void cry()
{
System.out.println("猫叫");}
多态注意事项:
java允许父类的引用变量引用它的子类的实例(对象)Animal animal=new Cat();
这种转换自动完成;
多态定义:一个引用(类型)在不同情况下的多种状态。
抽象类的必要性:
package com.test2;
public class Test { public static void main(String[] args) { }
}
abstract class Animal
{
String name;
int age;
//动物会叫
public void cry();
abstract public void cry(); }
//当一个类继承的父类是抽象类的话,需要我们把抽象类中的所有抽象方法全部实现
class Cat extends Animal
{
//实现父类cry
public void cry()
{
//do nothing
System.out.println("猫叫");
}
}
定义:
1、用abstract关键字来修饰一个类时,这个类就叫抽象类
2、用abstract关键字来修饰一个方法时,这个方法就是抽象方法
3、抽象方法在编程中用的不多,但在公司笔试时较常见
注意:
1、抽象类不能被实例化
2、抽象方法不一定要包含abstract方法
3、一旦包含abstract方法,则这个类必须声明为abstract
4、抽象方法不能有主体
接口:给出一些没有内容的方法,封装到一起,要使用时将这些方法写出来
<class 类名 implements 接口{
方法;
变量;
}
>
接口:体现程序设计多态和高内聚低耦合的设计思想
<当一个类实现了一个接口,就要求该类把这个接口的所有方法统统实现
interface Usb{ //声明两个方法
//开始工作
public void start();
//停止工作
public void stop();
}
//编写了照相机类
class Camera implements Usb{
public void start(){
System.out.println("开始工作");
}
public void stop(){
System.out.println("停止工作");
}
}
class Phone implement Usb{
public void start(){
System.out.println("开始工作");
}
public void stop(){
System.out.println("结束工作");
}
}
//计算机
class Computer{ //开始使用usb接口
public void useUsb(Usb usb){
usb.start();
usb.stop();
}
}
//接口继承别的接口
class Base{
}
interface Tt{
}
interface Son extends Tt{
}
public class Demo4_2{
public static void main(String[] args){
System.out.println(Usb.a);
Computer computer=new Computer(); //创建Camera
Camera cameral=new Camera();
//创建Phone
Phone phone1=new Phone();
computer.useUsb(camera1);
computer.useUsb(phone1); }
JAVA(2)的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- Java多线程基础学习(二)
9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...
- Java多线程基础学习(一)
1. 创建线程 1.1 通过构造函数:public Thread(Runnable target, String name){} 或:public Thread(Runnable target ...
- c#与java的区别
经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...
随机推荐
- css中各种情况下的元素的垂直和水平居中的问题
问题:外边是一个容器,容器中还有一个容器,那么请问怎么让里边的容器垂直水平居中显示?? No1: 外边的容器宽度和高度确认,里边是行内元素 .container{width:200px; height ...
- [原创]C#引用C++编译的dll
一.DllImportAttribute 1.属性介绍 using System; using System.Reflection; using System.Security; namespace ...
- 深度讲解VIEWPORT和PX是什么?移动端单位px,em,rem
刚开始接触移动页面重构,是不是很迷惑应该按照多大的尺寸制作?320.640还是720?按照640的设计稿重构完页面,是不是还需要写其他尺寸来适配不同的屏幕大小?—— 这源于对viewport和px的不 ...
- EF框架学习
简称EF,ADO.NET Entity Framework是微软以ADO.NET为基础所发展出来的对象关系对应(O/R Mapping)解决方案,是微软的一个ORM(面向对象的对象模型和关系型数据库的 ...
- 160个crackme-之Afkayas.1
工具: OD 环境: windows XP 运行: 我们先运行一下这个小程序,看看它到底是干什么的.运行后发现它要我们输入Type In your Name 和Type In your Serial ...
- Android中的颜色设置
1.在android中经常看到设置的颜色为八位的十六进制的颜色值,例如 public static final class color { public static final int lightb ...
- 一、Python 简介
There should be one -- and preferably only one -- obvious way to do it. 一种解释型,面向对象的.带有动态语义的高级程序设计语言. ...
- .netcore跨平台 之 windows上编译,ubuntu上运行
1 下载并安装netcore sdk 下载地址 https://github.com/dotnet/cli 选取合适的版本下载安装即可 打开 CMD ,输入dotnet,出现以下信息说明已安装好 ...
- LightOJ 1104
题意: 给你一年有n天,求至少有m人使得至少有两个人在同一天生日的概率不少于0.5. 分析: 任意两个人不在同一天生日的概率为C(n,m)*m!/n^m,它的对立事件A为至少有两个人在同一天生日, 则 ...
- java常用基础知识点 (持续追加)
作为一个Java编程人,会经常用上JDK中的大量的API类库,常用的有字符串操作.集合操作.文本操作.输入输出操作.以及网络操作, 常用的包: 1. java.lang Java程序的基础类,字符串, ...